四川大学线下编程比赛第一题:数字填充
2014-10-11 23:44
218 查看
题目详情:
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
解析:这道题很简单,只要能将问题拆分成若干个子问题就ok了,由题目可知,可以将问题分成两个子问题:1、横向填数字;2、纵向填数字;
当横向填充数字的时候,那么就将行数加1,即准备向下一行填充数字。
当纵向填充数字的时候,那么就将列数加1,即准备向下一列填充数字。
程序如下:
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
解析:这道题很简单,只要能将问题拆分成若干个子问题就ok了,由题目可知,可以将问题分成两个子问题:1、横向填数字;2、纵向填数字;
当横向填充数字的时候,那么就将行数加1,即准备向下一行填充数字。
当纵向填充数字的时候,那么就将列数加1,即准备向下一列填充数字。
程序如下:
#include<stdio.h> int r[31][31],N,num=1; int insertCol(int row,int col) { int i; for(i=col-1;i<N;i++) { r[row-1][i]=num++; } } int insertRow(int row,int col) { int i; for(i=row-1;i<N;i++) { r[i][col-1]=num++; } } int main() { int Max,row,col,i,j,b=1; while(scanf("%d",&N)==1) { b=1; row=1; col=1; num=1; Max=N*N; while(Max>=num) { if(b==1) { insertCol(row,col); row++; } else { insertRow(row,col); col++; } b=1-b; } for(i=0;i<N;i++) { for(j=0;j<N;j++) { printf("%d",r[i][j]); if(j<N-1) { printf(" "); } } printf("\n"); } } return 0; }
相关文章推荐
- 四川大学线下编程比赛第一题:数字填充
- 四川大学线下编程比赛第一题:数字填充
- 四川大学线下编程比赛第一题:数字填充
- CSDN 四川大学线下编程比赛第一题:数字填充
- CSDN 四川大学线下编程比赛第一题:数字填充
- CSDN 四川大学线下编程比赛第一题:数字填充
- 四川大学线下编程比赛第一题:数字填充
- 四川大学线下编程比赛第一题:数字填充
- 四川大学线下编程比赛第一题:数字填充 (java实现)
- 四川大学线下编程挑战——数字填充
- 线下编程1-数字填充
- CSDN 四川大学线下比赛第一题
- 四川大学线下编程比赛第二题:Peter的X
- 四川大学线下编程比赛第二题:Peter的X
- CSDN之金色十月线上编程比赛第一题:小女孩数数
- CSDN挑战编程——《金色十月线上编程比赛第一题:小女孩数数》
- 小编程题之数字填充
- 金色十月线上编程比赛第一题:小女孩数数
- 四川大学线下编程比赛第三题:书本转移
- 金色十月线上编程比赛第一题:小女孩数数