<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 閱讀(718) 評論(0)  編輯  收藏 所屬分類: 好文收集

    導航

    統計

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    介紹 IOC

    友情鏈接

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲爽爽一区二区三区| 亚洲av午夜精品无码专区| 中文字幕亚洲乱码熟女一区二区 | 久久久久久曰本AV免费免费| 特级做A爰片毛片免费69| 亚洲国产精品专区在线观看 | 91免费福利精品国产| 成人免费a级毛片无码网站入口| 噼里啪啦电影在线观看免费高清 | 亚洲av成人综合网| 好爽…又高潮了毛片免费看| 天堂亚洲国产中文在线| 久久99免费视频| 国产99视频免费精品是看6| 亚洲欧洲日产国产综合网| 特级毛片在线大全免费播放| 亚洲欧洲免费无码| 亚洲熟妇AV日韩熟妇在线| 最近2022中文字幕免费视频| 亚洲精品偷拍无码不卡av| 9i9精品国产免费久久| 情侣视频精品免费的国产| 久久水蜜桃亚洲av无码精品麻豆| 美女被羞羞网站免费下载| 免费看国产精品3a黄的视频| 成a人片亚洲日本久久| 四虎永久在线精品免费观看视频| 国产午夜亚洲精品午夜鲁丝片| 日韩免费在线视频| 亚洲精品无码永久在线观看你懂的| 日韩色视频一区二区三区亚洲| 亚洲国产精品不卡毛片a在线| 国产一级在线免费观看| 久久亚洲国产精品五月天婷| 无码天堂va亚洲va在线va| 国产亚洲自拍一区| 免费看男女下面日出水来| 亚洲成人免费网址| 久久精品免费全国观看国产| 免费播放美女一级毛片| 可以免费观看的一级毛片|