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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

信息学奥赛一本通(1262:【例9.6】挖地雷)

發(fā)布時間:2025/3/17 编程问答 8 豆豆
生活随笔 收集整理的這篇文章主要介紹了 信息学奥赛一本通(1262:【例9.6】挖地雷) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1262:【例9.6】挖地雷


時間限制: 1000 ms ??? ??? 內(nèi)存限制: 65536 KB
提交數(shù): 9596 ??? 通過數(shù): 4628

【題目描述】

在一個地圖上有nn個地窖(n≤200),每個地窖中埋有一定數(shù)量的地雷。同時,給出地窖之間的連接路徑,并規(guī)定路徑都是單向的,且保證都是小序號地窖指向大序號地窖,也不存在可以從一個地窖出發(fā)經(jīng)過若干地窖后又回到原來地窖的路徑。某人可以從任意一處開始挖地雷,然后沿著指出的連接往下挖(僅能選擇一條路徑),當無連接時挖地雷工作結束。設計一個挖地雷的方案,使他能挖到最多的地雷。

【輸入】

第一行:地窖的個數(shù);

第二行:為依次每個地窖地雷的個數(shù);

下面若干行:

xi yi? ?//表示從 xi 可到 yi,xi<yi。

最后一行為"00"表示結束。

【輸出】

k1?k2?…?kv? ? //挖地雷的順序

挖到最多的雷。

【輸入樣例】

6 5 10 20 5 4 5 1 2 1 4 2 4 3 4 4 5 4 6 5 6 0 0

【輸出樣例】

3-4-5-6 34

【分析】

? ? ? ? 設a[i]存儲地窖中地雷數(shù),f[i]以第i個地窖為起點最多可以挖到的地雷數(shù),p[i]記錄后續(xù)地窖位置。逆推實現(xiàn)。

(1)劃分階段。

? ? ? ? 階段:按地窖編號劃分階段;樣例中共有6個階段。

(2)確定狀態(tài)和狀態(tài)變量。

? ? ? ? 狀態(tài):按地窖編號劃分狀態(tài)。狀態(tài)信息用f[i]表示。

(2)確定決策并寫出狀態(tài)轉(zhuǎn)移方程。

? ? ? ? f[i]的值從哪來?當然是從后面f[i]來。決策:后面有通路的地窖中,選可以挖到地雷數(shù)最多的那個,策略:最多地雷數(shù)。故,狀態(tài)轉(zhuǎn)移方程: f[i]=max{ a[i]+f[j]?| c[i][j]=1, i<j<=n }。

(4)尋找邊界條件。

? ? ? ? 逆推時, 邊界:f[n]=a[n]。目標:max{ f[i] | 1<=i<=n }。?

(5)設計并實現(xiàn)程序。數(shù)據(jù)存儲和問題求解過程如下:

?【參考代碼】

#include <stdio.h> #define N 210 int n; int x,y; int a[N]; // 每個地窖的地雷數(shù) int c[N][N]; // 兩個地窖中是否有通路 int f[N]; // 以第i個地窖為起點最多可挖到的地雷數(shù) int p[N]; // 后續(xù)地窖的位置 int ans,s; // ans最大的地雷數(shù),s路徑起點編號 int main() {int i,j;int maxn,k;scanf("%d",&n);for(i=1;i<=n;i++) //輸入每個地窖中的地雷數(shù) scanf("%d",&a[i]);while(scanf("%d%d",&x,&y) && x||y){c[x][y]=1; //1連通,0不連通}f[n]=a[n]; // 邊界for(i=n-1;i>=1;i--){k=0;maxn=0;for(j=i+1;j<=n;j++){if(c[i][j]==1 && f[j]>maxn){maxn=f[j];k=j;}}f[i]=a[i]+maxn;p[i]=k;}ans=f[1];s=1;for(i=2;i<=n;i++) //找f[i]中的最大值 {if(f[i]>ans){ans=f[i];s=i;}}while(p[s]!=0) //輸出挖雷順序 {printf("%d-",s);s=p[s];}printf("%d\n",s);printf("%d\n",ans);return 0; }

http://ybt.ssoier.cn:8088/problem_show.php?pid=1262

總結

以上是生活随笔為你收集整理的信息学奥赛一本通(1262:【例9.6】挖地雷)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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