当前位置: 代码迷 >> 综合 >> HDU 2565 放大的X(二维数组模拟+格式输出)
  详细解决方案

HDU 2565 放大的X(二维数组模拟+格式输出)

热度:17   发布时间:2024-02-08 00:13:38.0

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;
}