sduzgz

蛇形矩阵

 1#include<iostream>
 2#include<stdlib.h>
 3using namespace std;
 4void snake(int step);  //定义蛇形矩阵产生函数
 5
 6int main()
 7{
 8  int N;
 9  cout<<"please input step:"<<endl;
10  cin>>N;
11  snake(N);
12  system("pause");
13  return 0;
14}

15void snake(int step)
16{
17int i,j;
18int n=step;
19int p[10][10];
20p[0][0]=1;  //矩阵左上角和右下角两个顶点是确定的值
21p[n-1][n-1]=n*n;
22for(i=0;i<=n-1;i++)
23    for(j=0;j<=i;j++)
24    {
25        if(i>0&&(i%2)!=0)
26        {
27        p[i][0]=p[i-1][0]+1;
28        p[i-j][j]=p[i][0]+j;
29        }

30        else if(i>0&&(i%2)==0)
31        {
32        p[0][i]=p[0][i-1]+1;
33        p[j][i-j]=p[0][i]+j;
34        }

35    }
     // 到这里实现蛇形矩阵的左上部分,下面根据右下角p[n-1][n-1]实现右下部分
36    for(i=n-1;i>=0;i--)
37        for(j=n-1;j>=0;j--)
38        {
39        int sum=i+j;
40        if(sum>(n-1)&&j<n-1)
41        {
42        if(sum%2!=0)
43        {
44        p[sum-n+1][n-1]=p[sum-n+2][n-1]-1;
45        p[sum-j][j]=p[sum-n+1][n-1]-(n-1-j);
46        }

47        else
48        {
49        p[n-1][sum-n+1]=p[n-1][sum-n+2]-1;
50        p[j][sum-j]=p[n-1][sum-n+1]-(n-1-j);
51        }

52        }

53        }

54    for(i=0;i<=n-1;i++)
55{
56     for(j=0;j<=n-1;j++)
57    {
58    cout<<p[i][j]<<' ';
59    }

60     cout<<endl;
61}

posted on 2010-09-01 09:49 sduzgz 阅读(946) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


My Links

Blog Stats

常用链接

留言簿

随笔档案

搜索

最新评论

  • 1. re: 素数查找
  • @李现民
    奥,茅塞顿开啊,谢谢啊!
  • --张爱静
  • 2. re: 素数查找
  • 评论内容较长,点击标题查看
  • --李现民
  • 3. re: 素数查找
  • 牛人啊,我这习惯确实很多问题啊,命名空间那个我可以明白,你说的prim[i]那个循环还有最后sqrt(N)拿到外面,改成那样有什么好处啊,虽然觉得好,但是不知道为什么。@李现民
  • --张爱静
  • 4. re: 素数查找
  • 评论内容较长,点击标题查看
  • --李现民
  • 5. re: 接口,虚函数及纯虚函数
  • 分得太细反而着了相, 不要太看重语法上的区别,这些东西都是基于应用而衍生的,多研究一些设计的东西, 比仔细区分这些语法概念要合算
  • --李现民

阅读排行榜

评论排行榜