小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

華為機試HJ53:楊輝三角的變形

 翟天保的圖書館 2022-01-13

作者:翟天保Steven
版權聲明:著作權歸作者所有,商業(yè)轉載請聯系作者獲得授權,非商業(yè)轉載請注明出處

題目描述:

以上三角形的數陣,第一行只有一個數1,以下每行的每個數,是恰好是它上面的數,左上角數到右上角的數,3個數之和(如果不存在某個數,認為該數就是0)。

求第n行第一個偶數出現的位置。如果沒有偶數,則輸出-1。例如輸入3,則輸出2,輸入4則輸出3。

輸入n(n?<=?1000000000)

本題有多組輸入數據,輸入到文件末尾,請使用while(cin>>)等方式讀入

輸入描述:

輸入一個int整數

輸出描述:

輸出返回的int值

示例:

輸入:

4
2

輸出:

3
-1

解題思路:

本題兩種解題思路。

  1. 第一種就是常規(guī)求解,見代碼一。輸入k行,按照楊輝三角的規(guī)律創(chuàng)建k行的三角數陣,然后在第k行尋找首次出現偶數的下標即可。
  2. 第二種就是找規(guī)律求解,見代碼二。分析后可知,前兩行為-1,從第三行開始有2324的循環(huán),所以當行數為奇數,結果就為2;當行數被4整除,結果為3;其他就為4。

測試代碼:

代碼一:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int num;
    while(cin>>num)
    {
        int row=num;
        int col=2*num-1;
        int L[row][col];
        for(int j=0;j<col;++j)
        {
            L[0][j]=0;
        }
        L[0][row-1]=1;
        for(int i=1;i<row;++i)
        {
            for(int j=1;j<col-1;++j)
            {
                L[i][j]=L[i-1][j-1]+L[i-1][j]+L[i-1][j+1];
            }
            L[i][0]=L[i-1][0]+L[i-1][1];
            L[i][col-1]=L[i-1][col-1]+L[i-1][col-2];
        }
        int id=0;
        bool getresult=false;
        for(int j=0;j<col;++j)
        {
            if(L[row-1][j]%2==0)
            {
                cout<<j+1<<endl;
                getresult=true;
                break;
            }
        }
        if(!getresult)
            cout<<"-1"<<endl;
    }
    return 0;
}

代碼二:

#include<iostream>
using namespace std;
int main(){
    int num;
    while(cin>>num){
        if(!num||num==1||num==2) cout<<-1<<endl;
        else if(num&1) cout<<2<<endl;
        else if(num%4) cout<<4<<endl;
        else cout<<3<<endl;
    }
    return 0;
}

    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多