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

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

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

    seaairland

     

    經(jīng)典矩陣問題

    經(jīng)典矩形問題
    生成各種矩陣是競賽時經(jīng)常考的一種題目,如何用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


    規(guī)律提示:

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

    ?

    第一種矩陣算法:

    #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標(biāo)記升降方向,斜向上為升(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標(biāo)記數(shù)組元素升降,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標(biāo)記數(shù)組元素升降,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)  編輯  收藏 所屬分類: 好文收集

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    介紹 IOC

    友情鏈接

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 91香蕉国产线观看免费全集| 国产高潮流白浆喷水免费A片 | 久久免费国产视频| 欧洲亚洲国产精华液| 极品美女一级毛片免费| 日韩一区二区三区免费播放| 免费不卡在线观看AV| 可以免费观看一级毛片黄a| 亚洲经典千人经典日产| 光棍天堂免费手机观看在线观看| 亚洲男人第一无码aⅴ网站| EEUSS影院WWW在线观看免费| 亚洲精品无码久久久影院相关影片 | 亚洲综合激情五月色一区| 成人免费视频88| 成人婷婷网色偷偷亚洲男人的天堂| 日韩人妻无码免费视频一区二区三区 | 亚洲欧洲精品无码AV| 91免费在线视频| 免费观看午夜在线欧差毛片| 久久青青草原亚洲av无码app| 91免费国产自产地址入| 亚洲性线免费观看视频成熟| 免费无码不卡视频在线观看| 免费无码午夜福利片69| 亚洲精品成人无码中文毛片不卡| 亚洲精品免费在线观看| 久久亚洲中文字幕精品一区| 永久免费av无码网站yy| 亚洲已满18点击进入在线观看| 国产精品免费看久久久无码| 国产精品永久免费视频| 亚洲欧洲高清有无| 日本免费中文字幕在线看| 久久免费视频一区| 亚洲人成在线中文字幕| 日韩av无码久久精品免费| 亚洲欧美日韩综合久久久| 亚洲精品白浆高清久久久久久| 99视频全部免费精品全部四虎| 亚洲AV无码国产剧情|