十字架
题面描述:
给出一个数 n,打印 n 层十字架。如下图所示为 n = 1 时的十字架 :
输入数据:
输入数据的第一行为一个正整数 T,表示有 T 组数据。
接下来的 T 行中每行为一个正整数 n,表示输入的层数(T <= 20, 0 < n <= 20)。
输出数据:
输出 T 组结果,每一组输出的第一行为"Case #x:",冒号后面没有空格,随后为
该组数据的答案。
样例输入:
2 1 2
样例输出:
#include<cstdio>
#include<iostream>
using namespace std;
int map[86][86] = { 0 };
int m, t;
int num[20] = { 0 };
int main() {scanf_s("%d", &t);for (int i = 0; i < t; i++) {scanf_s("%d", &num[i]);}for (int j = 0; j < t; j++) {m = 9 + (num[j] - 1) * 4;memset(map, 0, sizeof(map));for (int i = m / 2 - 1; i <= m / 2 + 3; i++)map[m / 2 + 1][i] = map[i][m / 2 + 1] = 1;for (int i = 1; i <= num[j]; i++){int x = i * 2 + 1, y = 2 * i;map[x][y] = map[x][y + 1] = map[x - 1][y + 1] = 1;y = m - i * 2;map[x][y] = map[x][y + 1] = map[x - 1][y] = 1;x = m - i * 2;map[x][y] = map[x][y + 1] = map[x + 1][y] = 1;y = 2 * i;map[x][y] = map[x][y + 1] = map[x + 1][y + 1] = 1;for (int ii = i * 2 + 1; ii <= m - i * 2; ii++){map[ii][(i - 1) * 2 + 1] = map[(i - 1) * 2 + 1][ii]= map[m - (i - 1) * 2][ii] = map[ii][m - (i - 1) * 2] = 1;}}cout << "Case #" << j + 1 << ":" << endl;for (int i = 1; i <= m; i++){for (int j = 1; j <= m; j++)if (map[i][j]) printf("$");else printf(".");puts("");}}system("pause");return 0;
}
十字架
题面描述:
给出一个数 n,打印 n 层十字架。如下图所示为 n = 1 时的十字架 :
输入数据:
输入数据的第一行为一个正整数 T,表示有 T 组数据。
接下来的 T 行中每行为一个正整数 n,表示输入的层数(T <= 20, 0 < n <= 20)。
输出数据:
输出 T 组结果,每一组输出的第一行为"Case #x:",冒号后面没有空格,随后为
该组数据的答案。
样例输入:
2 1 2
样例输出:
#include<cstdio>
#include<iostream>
using namespace std;
int map[86][86] = { 0 };
int m, t;
int num[20] = { 0 };
int main() {scanf_s("%d", &t);for (int i = 0; i < t; i++) {scanf_s("%d", &num[i]);}for (int j = 0; j < t; j++) {m = 9 + (num[j] - 1) * 4;memset(map, 0, sizeof(map));for (int i = m / 2 - 1; i <= m / 2 + 3; i++)map[m / 2 + 1][i] = map[i][m / 2 + 1] = 1;for (int i = 1; i <= num[j]; i++){int x = i * 2 + 1, y = 2 * i;map[x][y] = map[x][y + 1] = map[x - 1][y + 1] = 1;y = m - i * 2;map[x][y] = map[x][y + 1] = map[x - 1][y] = 1;x = m - i * 2;map[x][y] = map[x][y + 1] = map[x + 1][y] = 1;y = 2 * i;map[x][y] = map[x][y + 1] = map[x + 1][y + 1] = 1;for (int ii = i * 2 + 1; ii <= m - i * 2; ii++){map[ii][(i - 1) * 2 + 1] = map[(i - 1) * 2 + 1][ii]= map[m - (i - 1) * 2][ii] = map[ii][m - (i - 1) * 2] = 1;}}cout << "Case #" << j + 1 << ":" << endl;for (int i = 1; i <= m; i++){for (int j = 1; j <= m; j++)if (map[i][j]) printf("$");else printf(".");puts("");}}system("pause");return 0;
}