四川大学线下编程比赛第一题:数字填充

四川大学线下编程比赛第一题:数字填充

  • 公布公司:
  • 有 效 期:
  • CSDN
  • 2014-09-272015-09-26
  • 难 度 等 级:
  • 答 题 时 长:
  • 编程语言要求:
  • 120分钟
  • C C++ Java C#
题目详情

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;
}


posted @ 2015-12-17 14:36  mfrbuaa  阅读(232)  评论(0编辑  收藏  举报