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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

2018招商银行笔试题——团建活动

發(fā)布時(shí)間:2023/12/16 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2018招商银行笔试题——团建活动 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目大意:一排人站成一隊(duì),共有n個(gè)人,每個(gè)人有各自的身高,用一個(gè)數(shù)組表示。然后AB兩個(gè)人參與游戲,每次可以從隊(duì)伍最左側(cè)選擇一個(gè)或者兩個(gè)人加入自己的隊(duì)列,最后將兩人的隊(duì)列的人的身高總和進(jìn)行比較,總和大的人獲得勝利,A先手,且A和B每個(gè)人都足夠機(jī)智(每手都是最優(yōu)),求A是否可以必勝。

首先這題只是看上去像個(gè)博弈,但是由于每個(gè)人的身高不同(題目并沒有給出身高范圍,理論上可以出現(xiàn)一個(gè)人頂其它人總和的情況),所以博弈很難解決。

由于兩人都是足夠機(jī)智的,所以可以用dp[i]表示從位置i取可以獲得的最大值(A和B都可以表示),而隊(duì)伍末尾的值可以確定,即dp[n]=n;所以可以從最后進(jìn)行反推,狀態(tài)轉(zhuǎn)移方程為:

dp[i]=max(a[i]+sum[n]-sum[i]-dp[i+1],a[i]+a[i+1]+sum[n]-sum[i+1]-dp[i+2]);

(sum[i]表示隊(duì)列從1到i的身高總和)

#include <iostream> #include <cstdio> #include <cmath> #include <cstring> using namespace std; int main(){int n;int a[10000];int dp[10000];int sum[10000];scanf("%d",&n);memset(dp,0,sizeof(dp));memset(sum,0,sizeof(sum));for(int i=1;i<=n;i++){scanf("%d",&a[i]);sum[i] = sum[i-1]+a[i];}dp[n]=n;for(int i=n-1;i>=1;i--){dp[i]=max(a[i]+sum[n]-sum[i]-dp[i+1],a[i]+a[i+1]+sum[n]-sum[i+1]-dp[i+2]);}if(dp[1]>dp[2]||dp[1]>dp[3]){puts("true");}else{puts("false");}return 0; }

總結(jié)

以上是生活随笔為你收集整理的2018招商银行笔试题——团建活动的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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