Time Limit: 3 second
Memory Limit: 2 MB
设计程序,当用户键入n,输出题意规定的n*n矩阵。
例如,用户输入n的值为9,则输出:
999999999
988888889
987777789
987666789
987656789
987666789
987777789
988888889
999999999
Input
输入文件仅一行,输入n(1≤n≤9)。
Output
输出矩阵。(最后用换行结束)
Sample Input
4
Sample Output
4444 4334 4334 4444
【题解】
注意一圈一圈往内外围的数字逐渐递减,然后模拟一下等于9时如何处理,很容易找到规律,把9改成一个变量就可以了。
【代码】
#include <cstdio>
const int MAXN = 9;
int n,a[MAXN+2][MAXN+2];
void input_data()
{
scanf("%d",&n);
}
void get_ans()
{
for (int i = n;i >= ((n/2)+1);i--) //这里i的下界就是整个矩阵中出现的最小数。
{
for (int j = 1+n-i;j <= i;j++) //这里的规律要先模拟一下才能找出来。 取n=9是比较好的选择。
{
a[1+n-i][j] = i;
a[j][1+n-i] = i;
a[i][j] = i;
a[j][i] = i;
}
}
for (int i = 1;i <=n;i++)
{
for (int j = 1;j <= n;j++)
printf("%d",a[i][j]);
printf("
");
}
}
int main()
{
input_data();
get_ans();
return 0;
}