本文主要是介绍叠筐 HDU - 2074(矩阵填数字),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
description
需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
Input
输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;
Output
输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
Sample Input
11 B A
5 @ W
Sample Output
AAAAAAAAA
ABBBBBBBBBA
ABAAAAAAABA
ABABBBBBABA
ABABAAABABA
ABABABABABA
ABABAAABABA
ABABBBBBABA
ABAAAAAAABA
ABBBBBBBBBA
AAAAAAAAA
@@@
@WWW@
@W@W@
@WWW@
@@@
solution
先在二维矩阵中填数字,再输出
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int buf[100][100];
int main()
{// freopen("in.txt", "r", stdin);int N, first_case = 1;char c1, c2, c3;while (scanf("%d %c %c", &N, &c1, &c2) != EOF && N != 0){int x, y, flag = 1;for (int N2 = N; N2 > 0; N2 -= 2){//选择字符c3 = flag == 1 ? c1 : c2;flag = -flag;// 环形打印字符x = N / 2 - N2 / 2, y = x;for (int i = x; i <= N - 1 - x; i++){buf[i][y] = c3; //左边buf[i][N - 1 - y] = c3; //右边buf[x][i] = c3; //上边buf[N - 1 - x][i] = c3; //下边}}if (N != 1){buf[0][0] = ' ';buf[0][N - 1] = ' ';buf[N - 1][0] = ' ';buf[N - 1][N - 1] = ' ';}if (first_case == 0)printf("\n");first_case = 0;for (int i = 0; i < N; i++){for (int j = 0; j < N; j++){printf("%c", buf[i][j]);}printf("\n");}}return 0;
}
这篇关于叠筐 HDU - 2074(矩阵填数字)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!