24h購物| | PChome| 登入
2009-06-07 17:20:42| 人氣813| 回應2 | 上一篇 | 下一篇

97北縣賽-4-金幣問題

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

作法:DFS

搜尋的終止條件很重要

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

#include<stdio.h>
#include<stdlib.h>
int map[256][256]={0},flag[256]={0};
int n,k;
int maptop[256]={0},way[256]={0},x,y,max;
void DFS(int now,int time)

  int a,find=0;
  if(time>max)  max=time;
               
  if(now>n||(n-now+1)/2+time+2<=max) return;

  for(a=0;a<maptop[now];a++)
   if(flag[map[now][a]]==1)
    {find=1;break;}
  if(find==0)
   {
     flag[now]=1;
     DFS(now+1,time+1);
     flag[now]=0;
   }
  DFS(now+1,time);
}
main()
{
 int a,b;
    scanf("%d",&n);
    for(a=0;a<=n;a++) {maptop[a]=0;flag[a]=0;way[a]=0;}
    while(scanf("%d",&x)==1&&x!=0)
    {
       scanf("%d",&y);
       map[x][maptop[x]]=y;
       maptop[x]++;
       map[y][maptop[y]]=x;
       maptop[y]++;
    }
    max=0;
    DFS(1,0);   
    printf("%d\n",max);
 return 0;
}

 

台長: 來源不明
人氣(813) | 回應(2)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: 資訊競賽 |
此分類下一篇:97北縣賽-1-正弦三角函數 北賽三重高中賽區
此分類上一篇:95北市資訊學科能力競賽 送愛心到肯大亞 (Care)

路人
不太懂這行的意思(n-now+1)/2+time+2<=max
2009-11-04 16:37:48
版主回應
如果它一張圖的話 (假設) 那麼 最多的可能性就是一半
2009-11-04 18:12:28
路人
但如果剩下的點沒有連結
不是全部都算?
2009-11-04 20:25:04
版主回應
假設
2009-11-04 21:45:09
是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文