特殊的正方形 - 题目 - Daimayuan Online Judge
类似于蛇形填数,模拟即可
但是调试了半天,各种小错误层出不穷
写法一:
#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
#include<cstdio>
using namespace std;
typedef long long LL;
const int N = 110;
char a[N][N];
char ch;
int main()
{
int n;
int i, j;
int l, r;
cin >> n;
i = j = 1;
l = 1, r = n;
ch = '+';
int flag = 1;
a[i][j] = ch;
while (1) {
j++;
while (j <= r) {
a[i][j] = ch;
j++;
}
j--;
while (i <= r) {
a[i][j] = ch;
i++;
}
i--;
while (j >=l) {
a[i][j] =ch;
j--;
}
j++;
while (i >= l+1) {
a[i][j] = ch;
i--;
}
i++;
if (l >=r) break;
l++;
r--;
flag = 1 - flag;
if (flag == 1) ch = '+';
else ch = '.';
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
printf("%c", a[i][j]);
}
printf("\n");
}
return 0;
}
写法二:
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long LL;
const int N = 110;
char a[N][N];
int main()
{
int n;
cin >> n;
int i, j;
i = 1, j = 1;
int l = 1, r = n;
int flag = 1;
char ch = '+';
a[1][1] = ch;
while (l<=r) {
j++;
a[i][j] = ch;
while (j <= r) {
a[i][j] = ch;
j++;
}
j--;
while (i <= r) {
a[i][j] = ch;
i++;
}
i--;
while (j >= l) {
a[i][j] = ch;
j--;
}
j++;
while (i >= l + 1) {
a[i][j] = ch;
i--;
}
i++;
l++;
r--;
flag = 1 - flag;
if (flag == 1) ch = '+';
else ch = '.';
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
printf("%c", a[i][j]);
}
printf("\n");
}
return 0;
}