• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Sephiroth's boring days!!!

            Love just for you.

            動態規劃-最小總代價

            【問題描述】

            n個人在做傳遞物品的游戲,編號為1-n。

            游戲規則是這樣的:開始時物品可以在任意一人手上,他可把物品傳遞給其他人中的任意一位;下一個人可以傳遞給未接過物品的任意一人。

            即物品只能經過同一個人一次,而且每次傳遞過程都有一個代價;不同的人傳給不同的人的代價值之間沒有聯系;

            求當物品經過所有n個人后,整個過程的總代價是多少。

            【輸入】

            第一行為n,表示共有n個人(16>=n>=2);

            以下為n*n的矩陣,第i+1行、第j列表示物品從編號為i的人傳遞到編號為j的人所花費的代價,特別的有第i+1行、第i列為-1(因為物品不能自己傳給自己),其他數據均為正整數(<=10000)。

            (對于50%的數據,n<=11)。

            【輸出】

            一個數,為最小的代價總和。

            【樣例輸入】

            2

            -1 9794

            2724 –1

            【樣例輸出】

            2724


            時間到了啊~ 明天再繼續寫。

            是一個用二進制來表示圖的狀態的動態規劃,或者說是記憶化搜索。f[i][j]中,i來表示圖的二進制狀態,j表示這個狀態中第一個點。

              1: #include <stdio.h>
            
              2: #include <iostream>
            
              3: #define maxn 20
            
              4: #define MAXINT 1000000
            
              5: using namespace std;
            
              6: 
            
              7: int dis[maxn][maxn];
            
              8: int n;
            
              9: int f[70000][20];
            
             10: int ans=MAXINT;
            
             11: 
            
             12: int find(int a,int b)
            
             13: {
            
             14:     if (f[a][b]!=MAXINT) return f[a][b];
            
             15:     int tem=a;
            
             16:     a-=(1<<b);
            
             17:     if (!a)
            
             18:     {
            
             19:         f[tem][b]=0;
            
             20:         return 0;
            
             21:     }
            
             22:     for (int i=0;i<n;++i)
            
             23:         if ((1<<i)&a)
            
             24:             f[tem][b]=min(find(a,i)+dis[b][i],f[tem][b]);
            
             25:     return f[tem][b];
            
             26: }
            
             27: 
            
             28: int main()
            
             29: {
            
             30:     freopen("input.txt","r",stdin);
            
             31:     freopen("output.txt","w",stdout);
            
             32:     
            
             33:     scanf("%d",&n);
            
             34:     for (int i=0;i<n;++i)
            
             35:         for (int j=0;j<n;++j)
            
             36:             scanf("%d",&dis[i][j]);
            
             37:     for (int i=0;i<(1<<n);++i)
            
             38:         for (int j=0;j<n;++j)
            
             39:             f[i][j]=MAXINT;
            
             40:     for (int i=0;i<n;++i)
            
             41:         if (find((1<<n)-1,i)<ans)
            
             42:             ans=find((1<<n)-1,i);
            
             43:     printf("%d\n",ans);
            
             44:     return 0;
            
             45: }
            
             46: 

            posted on 2010-08-30 21:59 Sephiroth Lee 閱讀(441) 評論(0)  編輯 收藏 引用 所屬分類: 信息奧賽

            free counters
            欧美久久亚洲精品| 国产成人99久久亚洲综合精品| 久久只有这精品99| 国产成人综合久久精品红| 精品国产青草久久久久福利| 色欲av伊人久久大香线蕉影院 | 国产综合久久久久| 国产99久久久国产精品~~牛| 久久久久亚洲?V成人无码| 久久精品aⅴ无码中文字字幕不卡| 性色欲网站人妻丰满中文久久不卡| 热久久国产精品| 亚洲国产欧洲综合997久久| 国产综合免费精品久久久| 国产成人无码精品久久久性色| 久久99热精品| 久久久久人妻一区二区三区vr| 久久人人爽人人爽AV片| 久久99精品久久只有精品| 久久久久人妻一区二区三区 | 性做久久久久久久久浪潮| 久久99国产精品99久久| 香蕉久久av一区二区三区| 一级女性全黄久久生活片免费| 久久精品成人国产午夜| 欧美黑人激情性久久| 亚洲欧美一级久久精品| 国产精品gz久久久| 国产午夜久久影院| 精品综合久久久久久97超人 | 久久婷婷五月综合色99啪ak| 亚洲午夜久久影院| 2022年国产精品久久久久| 久久久久青草线蕉综合超碰| 久久亚洲国产最新网站| 四虎国产精品成人免费久久| 日本欧美国产精品第一页久久| 国产精品青草久久久久福利99| 久久久青草青青亚洲国产免观| 国产精品久久久久久久久鸭| 久久精品a亚洲国产v高清不卡|