设为首页 加入收藏

TOP

博弈问题之SG函数博弈小结(三)
2014-11-23 21:46:41 来源: 作者: 【 】 浏览:25
Tags:博弈 问题 函数 小结
)
{
return sg[x]=i;
}
}
}
int main()
{
int n,sum;
mem(sg,-1);
while(scanf("%d",&n)!=EOF)
{
sum=dfs(n);
if(sum)
{
printf("1\n");
}
else
{
printf("2\n");
}
}
return 0;
}
POJ2599 A funny game
记忆化搜索,这题的博弈味道不浓,更多的是搜索。题意是给一个图,两人轮流移动,走过的节点不能再走。水题,dfs+标记就行。
[cpp]
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define mem(a,b) memset(a,b,sizeof(a))
#define FOR(a,b,i) for(i=a;i<=b;++i)
#define For(a,b,i) for(i=a;i
#define N 1000000007
using namespace std;
inline void RD(int &ret)
{
char c;
do
{
c=getchar();
}
while(c<'0'||c>'9');
ret=c-'0';
while((c=getchar())>='0'&&c<='9')
{
ret=ret*10+(c-'0');
}
}
inline void OT(int a)
{
if(a>=10)
{
OT(a/10);
}
putchar(a%10+'0');
}
int n,v[1001][1001],vis[1001];
int dfs(int x)
{
int i;
FOR(1,n,i)
{
vis[x]=1;
if(v[i][x]&&!vis[i])
{
if(!dfs(i))
{
vis[x]=0;
return i;
}
}
vis[x]=0;
}
return 0;
}
int main()
{
int m,i,a,b;
while(scanf("%d%d",&n,&m)!=EOF)
{
mem(v,0);
mem(vis,0);
FOR(1,n-1,i)
{
RD(a);
RD(b);
v[a][b]=v[b][a]=1;
}
i=dfs(m);
if(i!=0)
{
printf("First player wins flying to airport %d\n",i);
}
else
{
printf("First player loses\n");
}
}
return 0;
}
首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hdu 1159 下一篇一道c++小编程题,

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis压力测试实战 - (2025-12-27 09:20:24)
·高并发一上来,微服 (2025-12-27 09:20:21)
·Redis 高可用架构深 (2025-12-27 09:20:18)
·Linux 系统监控 的完 (2025-12-27 08:52:29)
·一口气总结,25 个 L (2025-12-27 08:52:27)