日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数组经典题之杨辉三角变形

發(fā)布時(shí)間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数组经典题之杨辉三角变形 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目

楊輝三角變形

解決

可以把題目給的圖變形成一個(gè)容易理解的三角形

可以看出每一個(gè)數(shù)都是上面的三個(gè)數(shù)的和。
我們可以將原圖補(bǔ)全為一個(gè)完整的矩形,每一行的元素個(gè)數(shù)的都是2×行標(biāo)-1。

因此我們可以搞出一個(gè)矩形,首先所有為止都填充為0,然后依次按照列賦值,其中每一行的第一列和最后一列的值為1,每一行的第二列和倒數(shù)第二列需要特殊處理,因?yàn)樗麄儾粔蛏弦恍械臄?shù)不夠三個(gè),直接復(fù)制會(huì)越界。

解決

#include <iostream> #include <vector> using namespace std;int find_index(int n) {int m=2*n-1;//長為m,寬為n的矩形vector<vector<int>> vv(n,vector<int>(m,0));vv[0][0]=1;for(int i=1;i<n;i++)//按行{vv[i][0]=vv[i][2*i]=1;//每一行的第一個(gè)元素和最后一個(gè)元素是1for(int j=1;j<2*i;j++)//按列賦值{if(j==1)//第二列特殊處理vv[i][j]=vv[i-1][j]+vv[i-1][j-1];else if(j==2*i-1)//倒數(shù)第二列特殊處理vv[i][j]=vv[i-1][j-1]+vv[i-1][j-2];else//正常情況vv[i][j]=vv[i-1][j-2]+vv[i-1][j-1]+vv[i-1][j];}}for(int k=0;k<m;k++)//查找第n行第一個(gè)出現(xiàn)的偶數(shù)的下標(biāo){if(vv[n-1][k]%2==0){return k+1;}}return -1;}int main() {int n,index;while(cin>>n){index=find_index(n);cout<<index<<endl;}}

這道題關(guān)鍵就在于對于下標(biāo)的精確把握,稍有不注意就會(huì)做錯(cuò)

總結(jié)

以上是生活随笔為你收集整理的数组经典题之杨辉三角变形的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。