花了一个早晨,做了一道同济大学的ACM题目,题目是:
蛇行矩阵
Problem
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
Input
本题有多组数据,每组数据由一个正整数N组成。(N不大于100)
Output
对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。
矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。
Sample Input
5
Sample Output
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
起初就觉得奇怪,好象蛇行阵不是这样的,管它了,能做就行,可是做这种数学题那真是累,现在越来越觉得自己的数学是那么的烂啊,郁闷!~``~~~`
但还是“艰难”地完成了:
#include
int main()
{
int a[20][20];
int i,n,m,x,y,num=1;
printf("input n:\n");
scanf("%d",&n);
for(i=1;i<=n;i++) //将数字赋给二维数组
{
x=i;y=1;
for(int count=1;count<=i;count++)
{
a[x][y]=num;
num++;
x--;
y++;
}
}
for(x=1;x<=n;x++) //打印数组
{
for(y=1;y<=n-x+1;y++)
printf("%d ",a[x][y]);
printf("\n");
}
return 0;
}
可是没想到代码原来这么简单,就是FOR循环这里害我半天转不过弯来。早晨起来又看到一道题:
矩阵中填数. 当给出 N*N 的矩阵,要求用程序填入下列形式的数:
// ① 倒填,例如N=5 ② 蛇形填数 ③ 回转填数
//
// ┌─┬─┬─┬─┬─┐ ┌─┬─┬─┬─┬─┐ ┌─┬─┬─┬─┬─┐
// │25│24│23│22│21│ │ 1│ 3│ 4│10│11│ │ 1│16│15│14│13│
// ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤
// │20│19│18│17│16│ │ 2│ 5│ 9│12│19│ │ 2│17│24│23│12│
// ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤
// │15│14│13│12│11│ │ 6│ 8│13│18│20│ │ 3│18│25│22│11│
// ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤
// │10│ 9│ 8│ 7│ 6│ │ 7│14│17│21│24│ │ 4│19│20│21│10│
// ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤
// │ 5│ 4│ 3│ 2│ 1│ │15│16│22│23│25│ │ 5│ 6│ 7│ 8│ 9│
// └─┴─┴─┴─┴─┘ └─┴─┴─┴─┴─┘ └─┴─┴─┴─┴─┘
挖靠!中间这道才是我以前见过的地地道道的蛇行阵,前面的就不说了,中间的这道比我上面做的那道就是拐了个弯而已,环绕方向变了,而上面的这道是同个方向,但是我还是绞尽脑汁做了出来:
#include
int main()
{
int a[20][20];
int i,n,m,x,y,num=1;
printf("input n:\n");
scanf("%d",&n);
for(i=1;i<=n;i++) //将数字赋给蛇形阵的上三角
{
if(i%2==1)
{
x=1;
y=i;
for(int count=1;count<=i;count++)
{
a[x][y]=num;
num++;
x++;
y--;
}
}
else
{
x=i;
y=1;
for(int count=1;count<=i;count++)
{
a[x][y]=num;
num++;
x--;
y++;
}
}
}
num=n*n;
for(i=n;i>1;i--) //将数字赋给蛇形阵的下三角
{
if(i%2==1)
{
x=n;
y=i;
for(int count=1;count<=n+1-i;count++)
{
a[x][y]=num;
num--;
x--;
y++;
}
}
else
{
x=i;
y=n;
for(int count=1;count<=n+1-i;count++)
{
a[x][y]=num;
num--;
x++;
y--;
}
}
}
for(x=1;x<=n;x++) //打印数组
{
for(y=1;y<=n;y++)
printf("%d ",a[x][y]);
printf("\n");
}
return 0;
}
说真的,看到这些嵌套的循环头都大了,即使是自己做的,答案也对了,都不想回过头去再看一遍啊,我已经死了不少脑细胞了~~~~`
下学期就学数据结构了,这门课非常重要的,因为它讲究的是思想和考虑问题的角度,对任何一们语言都是适用的,现在好好努力了,同过上面几道所谓的ACM题(其实没那么简单吧)可以看出自己的数学和算法真的很弱啊,只有继续做题了,会慢慢积累的...
分享到:
相关推荐
ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛ACM大赛
ACM ACM ACM ACM ACM讲义.ppt
ACM 模板ACM 模板ACM 模板ACM 模板ACM 模板ACM 模板ACM 模板ACM 模板ACM 模板ACM 模板ACM 模板ACM 模板ACM 模板AACM 模板ACM 模板ACM 模板ACM 模板ACM 模板ACM 模板ACM 模板ACM 模板ACM 模板ACM 模板ACM 模板ACM ...
ACM PRO ACM PROACM PRO ACM PROACM PRO ACM PRO
包含近几年多道ACM面试题目,希望有所帮助
acm模板acm模板acm模板acm模板acm模板acm模板acm模板acm模板
ACM常用代码ACM常用代码ACM常用代码ACM常用代码ACM常用代码ACM常用代码ACM常用代码ACM常用代码ACM常用代码ACM常用代码ACM常用代码ACM常用代码ACM常用代码
ACM地址 ACM地址 ACM地址 ACM地址 ACM地址
acm经典题库acm经典题库acm经典题库
ACM大数模版ACM大数模版ACM大数模版ACM大数模版ACM大数模版ACM大数模版ACM大数模版ACM大数模版
上海交大ACM模板 考研复试机试参考资料
ACM练习建议 ACM练习建议 ACM练习建议
ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM各种练习题ACM...
acm课件1acm课件1acm课件1acm课件1acm课件1acm课件1acm课件1acm课件1acm课件1
杭电ACM分类杭电ACM分类杭电ACM分类杭电ACM分类
ACM培训资料 ACM培训资料 ACM培训资料 ACM培训资料
北大ACM分类,北大ACM分类 北大ACM分类
acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm经典acm...
ACM常用模板 ACM常用模板 ACM常用模板 ACM常用模板