HDU 2565 放大的X(二维数组模拟+格式输出)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2565
放大的X
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 18353 Accepted Submission(s): 5921
Problem Description
请你编程画一个放大的’X’。
如3*3的’X’应如下所示:
X X
X
X X
5*5的’X’如下所示:
X X
X X
X
X X
X X
Input
输入数据第一行是一个整数T,表示有T组测试数据;
接下来有T行,每行有一个正奇数n(3 <= n <= 79),表示放大的规格。
Output
对于每一个n打印一个规格为n * n放大的’X’;每组输出后面空一行。
Sample Input
2
3
5
Sample Output
X X
X
X X
X X
X X
X
X X
X X
注意不能输出多余的空格
AC代码:
#include<bits/stdc++.h>using namespace std;
int a[100][100];
int main()
{int T, n;cin >> T;while (T--){cin >> n;memset(a, 0, sizeof(a)); //二维数组初始化for (int i = 1; i <= n; i++) //正对角线处理{a[i][i] = 1;if (i >= (n + 1) / 2){a[i][i + 1] = -1;}}for (int i = n; i >= 1; i--) //反对角线处理{a[i][n - i + 1] = 1;if (i < (n + 1) / 2){a[i][n - i + 2] = -1;}}for (int i = 1; i <= n; i++) //输出,注意不能输出多余的空格{for (int j = 1; j <= n; j++){if (a[i][j] == 1){cout << 'X';}else if (a[i][j] == -1) break; else cout << ' ';}cout << endl;}cout << endl;}return 0;
}