四川大学线下编程比赛第一题:数字填充
-
CSDN
-
2014-09-27至2015-09-26
-
难 度 等 级:
-
答 题 时 长:
-
编程语言要求:
题目详情
peter喜欢玩数字游戏。但数独这种游戏对他来说太简单了。于是他准备玩一个难的游戏。游戏规则是在一个N*N的表格里填数,规则:对于每一个输入的N,从左上角開始,总是以对角线为起点,先横着填。再竖着填。这里给了一些例子,请在例子中找到规律并把这个N*N的表格打印出来吧。
输入描写叙述:
多组測试数据(数据量在100组以内)。
每组測试数据仅仅有一行为一个整数N(1<=N<=30)。表示表格的大小。
输出描写叙述:
对于每组输入数据,输出N行,为填完的表格(N行。每行N个整数,每一个数字之间用空格隔开。
答题说明
输入例子:
3
5
输出例子:
1 2 3
4 6 7
5 8 9
1 2 3 4 5
6 10 11 12 13
7 14 17 18 19
8 15 20 22 23
9 16 21 24 25
题解:直接模拟;
#include <iostream>
using namespace std;
#define MAX 30+1
int main(){
int n,map[MAX][MAX];
while (cin>>n){
int num=1;
for (int i=0;i<n;i++){
for (int j=i;j<n;j++)
map[i][j]=num++;
for (int k=i+1;k<n;k++)
map[k][i]=num++;
}
for (int i=0;i<n;i++){
for (int j=0;j<n-1;j++)
cout<<map[i][j]<<" ";
cout<<map[i][n-1]<<endl;
}
}
return 0;
}