24h購物| | PChome| 登入
2009-05-06 22:04:44| 人氣1,009| 回應0 | 上一篇 | 下一篇

ACM 291 The House Of Santa Claus

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

作法:(1)多個for(暴力解)(2)善用void以及圖表
想法:1.先從1開始走 然後找數字較小的走
    2.走過去之後 要把路塗掉
    3.當我退回來時(沒辦法往下走的時候) 把路補回去...

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

#include<stdio.h>
#include<stdlib.h>
int map[5][5]={
                0,1,1,0,1,
                1,0,1,0,1,
                1,1,0,1,1,
                0,0,1,0,1,
                1,1,1,1,0
               };
 /*0 1 2 3 4 5*/  /*1代表有路可走*/
 /*1 0 1 1 0 1*/
 /*2 1 0 1 0 1*/
 /*3 1 1 0 1 1*/
 /*4 0 0 1 0 1*/
 /*5 1 1 1 1 0*/
int way[9]={0};
void make(int now,int walk)
{
 int a,b,sum=0;
 way[walk]=now;
 for(a=0;a<5;a++)
  for(b=0;b<5;b++) sum=sum+map[a][b];
 if(sum==0)
 {
   for(a=0;a<9;a++)  printf("%d",way[a]+1);
   printf("\n");
 }
   for(a=0;a<5;a++)
   if(map[now][a]==1&&a!=now)
    {
      map[now][a]=0;/*封路*/
      map[a][now]=0;
      make(a,walk+1);
      map[now][a]=1;
      map[a][now]=1;
    }
}
main()
{
 make(0,0);
 return 0;
}

台長: 來源不明
人氣(1,009) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: ACM |
此分類下一篇:ACM 438 The Circumference of the Circle
此分類上一篇:ACM 11032 11032 - Function Overloading

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