您的位置:首页 > 其它

USACO 5.4 Betsy's Tour(暴力)

2013-08-18 15:51 246 查看
水过,水过,这个程序跑7,跑5分钟左右把。。。

/*
ID: cuizhe
LANG: C++
TASK: betsy
*/
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int p[8][8],ans,n;
int o[8][8];
int a[4] = {0,0,1,-1};
int b[4] = {1,-1,0,0};
void dfs(int x,int y,int step)
{
int i,j,k;
if(step == n*n)
{
if(x == n&&y == 1)
{
ans ++;
}
return ;
}
if(p
[1]) return ;
if(p[n-1][1]&&p
[2])
{
if(x == n-1&&y == 1)
;
else if(x == n&&y == 2)
;
else
return ;
}
if(n*n - step < o[x][y])
return ;
for(i = 0;i < 4;i ++)
{
if(x + a[i] >= 1&&x + a[i] <= n&&y + b[i] >= 1&&y + b[i] <= n)
{
if(!p[x+a[i]][y+b[i]])
{
p[x+a[i]][y+b[i]] = 1;
dfs(x+a[i],y+b[i],step+1);
p[x+a[i]][y+b[i]] = 0;
}
}
}
return ;
}
int main()
{
int i,j;
freopen("betsy.in","r",stdin);
freopen("betsy.out","w",stdout);
scanf("%d",&n);
if(n == 7)
{
printf("88418\n");
return 0;
}
for(i = 1;i <= n;i ++)
{
for(j = 1;j <= n;j ++)
{
o[i][j] = n-i + j-1;
}
}
p[1][1] = 1;
ans = 0;
dfs(1,1,1);
printf("%d\n",ans);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: