2009-05-06 22:04:44來源不明
ACM 291 The House Of Santa Claus
作法:(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;
}