正文

蛇型矩阵的最简解(整体观察法)2007-04-15 13:19:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/andyhou/24904.html

分享到:

蛇行矩阵 Problem蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 Input本题有多组数据,每组数据由一个正整数N组成。(N不大于100) Output对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。 矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。 Sample Input5Sample Output1 3 6 10 152 5 9 144 8 137 1211 整体观察法思想:    先看输出;将它旋转45度你将看到;            1        2    3     4     5    6  7     8    9    10  11   12   13    14  15 其实这样也可以做解了。但是还有跟好的能看的很清楚的.你再让这组数往左边靠你将看到. 1 2    3 4       5       6 7       8     9    10 11   12   13   14   15 现在你可以看到什么?你看没行的最后一个元素.1 3 6 10 15.再往斜的继续看得到下行.2 5 9 14.再下.4  8 13.再下.7 12.最后.11.没色做为一行.你再摆下来。 1 3  6 10 15 2  5 9 14 4 8 13 7 12 11 不就成了,当然还可以变成向下的蛇型矩阵.我在程序中同样给出来了。也给出了数组转换的过程. 程序: #include <iostream>using namespace std; const int N=100;int main(){        int matrix[N][N];       int n;       cout<<"输入矩阵的行数: ";       cin>>n;      int tag=1;//标记符号。      for(int i=1;i<=n;i++)            for(int j=1;j<=i;j++)                 matrix[i][j]=tag++;//矩阵输入:         //蛇型矩阵的转换形式。         cout<<endl;       for(i=1;i<=n;i++)          {                     for(int j=1;j<=i;j++)                         cout<<matrix[i][j]<<" ";                    cout<<endl;            }           tag=1;      //蛇型矩阵的原型。          cout<<endl;          for( i=1;i<=n;i++)              {                    for(int j=i;j<=n;j++)                       cout<<matrix[j][tag++]<<" ";                     tag=1;                    cout<<endl;               }                //蛇型矩阵向下型。               cout<<endl;             for(i=1;i<=n;i++)             {                   for(int j=i;j<=n;j++)                         cout<<matrix[j][tag]<<" ";                    tag++;                   cout<<endl;                }             return 0;} 程序输出样例: 输入矩阵的行数: 6 12 34 5 67 8 9 1011 12 13 14 1516 17 18 19 20 21 1 3 6 10 15 212 5 9 14 204 8 13 197 12 1811 1716 1 2 4 7 11 163 5 8 12 176 9 13 1810 14 1915 2021Press any key to continue 注:其实很多程序中.你不要只注意每个元素的关系.有时你整体的来看会起到很好的效果的。在ACM的题库中我也看到了很多人的解法.有很多就是看到元素间的增减关系.他们写的也很好,不过我觉得我这样很好理解一些.  

阅读(3045) | 评论(2)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册