24h購物| | PChome| 登入
2009-05-31 06:25:17| 人氣529| 回應0 | 上一篇 | 下一篇

2008 海峽兩岸青少年程式設計競賽 雷曼兔

推薦 0 收藏 0 轉貼0 訂閱站台

作法:不太像是最短路徑,一直做更新的動作

由於是樹枝狀的圖,所以只要有順序的更新,便不會產生邏輯的錯誤

有環的或著是...就不行 以上

/**********************************************************/

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int num[2501][2]={0};
main()
{
 int n;
 while(scanf("%d",&n)==1)
   {
     int a,b,c,m;
     for(a=1;a<=n;a++)
      for(b=1;b<=n;b++)
       {
        scanf("%d",&m);
        num[m][0]=a;
        num[m][1]=b;
       }
     
     int way[2501]={0};
      for(b=1;b<=n*n;b++)
       for(c=1;c<b;c++)
         {
           int ll=(abs(num[b][0]-num[c][0])+abs(num[b][1]-num[c][1]))*(abs(num[b][0]-num[c][0])+abs(num[b][1]-num[c][1]));
           int temp=way[c]+ll;
           way[b]=(temp>way[b])?temp:way[b];
         }
       printf("%d\n",way[n*n]); 
   }
 return 0;
}

台長: 來源不明
人氣(529) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: 資訊競賽 |
此分類下一篇:95北市資訊學科能力競賽 送愛心到肯大亞 (Care)
此分類上一篇:昇旗典禮

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文