<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    seaairland

     

    經典矩陣問題

    經典矩形問題
    生成各種矩陣是競賽時經常考的一種題目,如何用C語言或C++生成以下形式幾種矩陣:

    第一種矩陣:

    1 2 9 10
    4 3 8 11
    5 6 7 12
    16 15 14 13


    第二種矩陣:(蛇形)

    1 2 6 7
    3 5 8 13
    4 9 12 14
    10 11 15 16


    第三種矩陣:

    1 2 3 4
    12 13 14 5
    11 16 15 6
    10 9 8 7


    第四種矩陣:

    7 6 5 16
    8 1 4 15
    9 2 3 14
    10 11 12 13


    規律提示:

    1.1->2 9->10
    4<-3 8 11
    5->6->7 12
    16<-15<-14<-13
    2.每個左上三角的數都是連續的
    3.一個回旋陣,從外到里是連續的。
    4.同樣是回旋,從里到外是連續的。

    ?

    第一種矩陣算法:

    #include<iostream.h>
    #include<iomanip.h>

    void main()
    {
    const int N=20;
    int i=0,j=0,a[N][N];
    int lap=1,m=1,n;
    while(1)
    {
    cout<<"\ninput matrix row N(N>=2): ";
    cin>>n;
    cout<<endl;
    if(n>=2) break;
    }
    a[i][j]=m++;
    lap++;
    while(lap<=n)
    {
    if(lap%2==0)
    {
    for(j++;i<lap;i++)
    a[i][j]=m++;i--;
    for(j--;j>=0;j--)
    a[i][j]=m++;j++;
    }
    else
    {
    for(i++;j<lap;j++)
    a[i][j]=m++;j--;
    for(i--;i>=0;i--)
    a[i][j]=m++;i++;
    }
    lap++;
    }
    for(i=0;i<n;i++)
    {
    for(j=0;j<n;j++)
    cout<<setw(4)<<setiosflags(ios::left)<<a[i][j];
    cout<<endl;
    }
    cout<<endl;
    }


    第二種矩陣算法:(蛇形)

    #include<iostream.h>
    #include<iomanip.h>

    void main()
    {
    const int MAXLEN=10;
    int nLen;
    int nSnake[MAXLEN][MAXLEN];
    do
    {
    cout<<"\ninput an integer less then "<<MAXLEN<<": ";
    cin>>nLen;
    cout<<endl;
    }while(nLen>MAXLEN);
    int i=0,j=0,s=1,nNum=1;
    //s標記升降方向,斜向上為升(s==1),斜向下為降(s==-1)
    while(1)
    {
    if(s==1)
    {
    nSnake[i][j]=nNum;
    if(i-1<0)
    {
    if(j+1==nLen)
    i++;
    else
    j++;
    s=-1;
    }
    else
    if(j+1==nLen)
    {
    i++;
    s=-1;
    }
    else
    {
    i--;
    j++;
    }
    }
    else
    {
    nSnake[i][j]=nNum;
    if(j-1<0)
    {
    if(i+1==nLen)
    j++;
    else
    i++;
    s=1;
    }
    else
    if(i+1==nLen)
    {
    j++;
    s=1;
    }
    else
    {
    i++;
    j--;
    }
    }
    nNum++;
    if(nNum>nLen*nLen)
    break;
    }
    for(i=0;i<nLen;i++)
    {
    for(j=0;j<nLen;j++)
    cout<<setw(4)<<setiosflags(ios::left)<<nSnake[i][j];
    cout<<endl;
    }
    cout<<endl;
    }


    第三種矩陣算法:

    #include<iostream.h>
    #include<iomanip.h>

    void main()
    {
    const int N=20;
    int i=0,j=0,a[N][N],n;
    int m=1,x1,x2,y1,y2,s=1;
    //x1,x2,y1,y2為上、下、左、右邊界
    //s標記數組元素升降,s==1為升,s==-1為降
    while(1)
    {
    cout<<"\ninput matrix row N(N>=2): ";
    cin>>n;
    cout<<endl;
    if(n>=2)
    break;
    }
    x1=0;y1=0;x2=n;y2=n;
    while(1)
    {
    if(s==1)
    {
    for(j;j<y2;j++)
    a[i][j]=m++;
    j--;i++;y2--;
    for(i;i<x2;i++)
    a[i][j]=m++;
    i--;j--;x2--;
    s=-1;
    }
    else
    {
    for(j;j>=y1;j--)
    a[i][j]=m++;
    j++;i--;y1++;
    for(i;i>=x1+1;i--)
    a[i][j]=m++;
    i++;j++;x1++;
    s=1;
    }
    if(m>n*n)
    break;
    }
    for(i=0;i<n;i++)
    {
    for(j=0;j<n;j++)
    cout<<setw(4)<<setiosflags(ios::left)<<a[i][j];
    cout<<endl;
    }
    cout<<endl;
    }


    第四種矩陣算法:

    #include<iostream.h>
    #include<iomanip.h>

    void main()
    {
    const int N=20;
    int i=0,j=0,a[N][N],n;
    int m,x1,x2,y1,y2,s;
    //x1,x2,y1,y2為上、下、左、右邊界
    //s標記數組元素升降,s==1為升,s==-1為降
    while(1)
    {
    cout<<"\ninput matrix row N(N>=2): ";
    cin>>n;
    cout<<endl;
    if(n>=2)
    break;
    }
    m=n*n;
    x1=0;y1=0;x2=n;y2=n;
    if(n%2==0)
    {j=n-1;y2=n-1;s=1;}
    else
    {i=n-1;y1=1;s=-1;}
    while(1)
    {
    if(s==1)
    {
    for(i;i<x2;i++)
    a[i][j]=m--;
    i--;j--;x2--;
    for(j;j>=y1;j--)
    a[i][j]=m--;
    j++;i--;y1++;
    s=-1;
    }
    else
    {
    for(i;i>=x1;i--)
    a[i][j]=m--;
    i++;j++;x1++;
    for(j;j<y2;j++)
    a[i][j]=m--;
    j--;i++;y2--;
    s=1;
    }
    if(m<1)
    break;
    }
    for(i=0;i<n;i++)
    {
    for(j=0;j<n;j++)
    cout<<setw(4)<<setiosflags(ios::left)<<a[i][j];
    cout<<endl;
    }
    cout<<endl;
    }

    ?

    posted on 2006-04-03 16:08 chenhui 閱讀(716) 評論(0)  編輯  收藏 所屬分類: 好文收集

    導航

    統計

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    介紹 IOC

    友情鏈接

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲美女视频一区| 亚洲一区二区三区无码中文字幕| 亚洲av无码一区二区三区乱子伦| 一级毛片aa高清免费观看| 亚洲成人国产精品| 男人扒开添女人下部免费视频| 免费a级毛片在线观看| 免费观看亚洲人成网站| 亚洲 国产 图片| 黄 色一级 成 人网站免费| 亚洲综合久久夜AV | 在线观看免费视频一区| 亚洲国产精品无码中文字| 人妻丰满熟妇无码区免费| 亚洲美女精品视频| 成人免费午夜无码视频| 亚洲av永久无码嘿嘿嘿 | 国产精品亚洲四区在线观看 | 成年在线网站免费观看无广告| 亚洲av乱码一区二区三区| 浮力影院第一页小视频国产在线观看免费| 99亚偷拍自图区亚洲| 亚洲AⅤ永久无码精品AA| 国产精品无码永久免费888| 亚洲av伊人久久综合密臀性色| 无码人妻AV免费一区二区三区 | 亚洲乱人伦中文字幕无码| 深夜国产福利99亚洲视频| 99在线免费视频| 亚洲一区精品视频在线| 国产人成免费视频| 免费91麻豆精品国产自产在线观看 | 亚洲理论精品午夜电影| 大陆一级毛片免费视频观看| 日韩精品免费一线在线观看| 亚洲国产精品无码专区| 麻豆国产精品入口免费观看| 两性色午夜视频免费播放| 亚洲一区二区三区高清视频| 亚洲国产aⅴ综合网| 91青青国产在线观看免费|