输入
输入一个正整数n(<=26),为方帕纹路的圈数
输出
输出为一个边长2*n-1的大写字母矩阵
输入样例
2
输出样例
AAA
ABA
AAA
析,此类二维数组,如正倒三角形,蛇形填数等等,皆是一遍一遍一层一层的填进去,
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
int main()
{
int n;
scanf("%d", &n );
int max = 2*n-1;
char a[max][max] ;
// char p[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //字符串(c版)
// string p = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //字符串(c++版)(头文件string)
for( int i = 0 ; i < max ; i++ ) //全给我变a
{
for( int j = 0 ; j < max ; j++ )
{
a[i][j] = 'A';
}
}
int count = 0;
while( n>1 )
{
int t = ++count; //善用计数器,将数倒过来用
for( int i = t; i< max-t ;i++ )
{
for( int j = t ; j< max-t ; j++ )
{
a[i][j] = ('A'+t);
}
}
n--;
}
// for( int i = 1 ; i<max-1 ; i++ ) //全给我变上b
// {
// for( int j = 1 ; j<max-1 ; j++ )
// {
// a[i][j] = p[1];
// }
// }
// for( int i = 2; i<max-2 ; i++ ) //给我变c
// {
// for( int j = 2; j<max-2 ; j++ )
// {
// a[i][j] = p[2];
// }
// }
for( int i = 0 ; i < max ; i++ )
{
for( int j = 0 ; j < max ; j++ )
{
printf("%c", a[i][j] );
}
printf("\n");
}
return 0 ;
}
另外,计数器count 的善用
蛇形填数
找规律,count,一圈一圈相里近
#include <stdio.h>
int main()
{
int i,j;
int n;
scanf("%d",&n);
int num[100];
for( i=0 ; i<n*n ; i++ )
{
num[i] = i+1;
}
int a[n][n]={0};
int t=0;
int count=0;
for( int y =0 ; y <n-2 ; y++ ) //找到每圈的规律
{
for( i=count ; i< n-count ; i++ ) //1234
{
a[i][n-1-count] = num[t++];
}
for( j=n-2-count ; j>=0+count ;j-- )//567
{
a[n-1-count][j] = num[t++];
}
for( i=n-2-count ; i>=0+count ;i-- )//8910
{
a[i][0+count] = num[t++];
}
for( j=1+count ; j<n-1-count ; j++ ) //1112
{
a[0+count][j] = num[t++];
}
count++; //计数器使用,
}
for( i=0 ; i<n ;i++){
for( j=0 ; j< n ; j++ ){
printf("%d\t",a[i][j]);
}
printf("\n");
}
return 0;
}