uva 1378 A Funny Stone Game (博弈-SG)
2014-08-12 22:03
423 查看
题目链接:http://vjudge.net/problem/viewProblem.action?id=41555
把第i堆的每个石子看出一堆个数为n-i的石子,转换为组合游戏
#include <stdio.h>
#include <algorithm>
#include <stdlib.h>
#include <cstring>
using namespace std;
#define N 30
int a
,sg
;
void cal_sg(){
int i;
sg[0]=0;
for(i=1;i<N;i++){
int vis[100];
memset(vis,0,sizeof vis);
for(int j=0;j<i;j++)
for(int k=j;k<i;k++)vis[sg[j]^sg[k]]=1;
for(int j=0;j<100;j++)if(!vis[j])
{sg[i]=j;break;}
}
}
int main(){
int n,cs=1;
cal_sg();
while(scanf("%d",&n) && n){
int i;
for(i=0;i<n;i++)scanf("%d",&a[i]);
int ans=0;
for(i=0;i<n;i++)if(a[i]&1)ans^=sg[n-i-1];
printf("Game %d: ",cs++);
if(ans==0)printf("-1 -1 -1\n");
else{
int k,j,flag=0;
for(i=0;i<n-1;i++)if(a[i]){
for(k=i+1;k<n;k++){
for(j=k;j<n;j++){
if(!(ans^sg[n-i-1]^sg[n-k-1]^sg[n-j-1]))flag=1;
if(flag)break;
}
if(flag)break;
}
if(flag)break;
}
printf("%d %d %d\n",i,k,j);
}
}
return 0;
}
把第i堆的每个石子看出一堆个数为n-i的石子,转换为组合游戏
#include <stdio.h>
#include <algorithm>
#include <stdlib.h>
#include <cstring>
using namespace std;
#define N 30
int a
,sg
;
void cal_sg(){
int i;
sg[0]=0;
for(i=1;i<N;i++){
int vis[100];
memset(vis,0,sizeof vis);
for(int j=0;j<i;j++)
for(int k=j;k<i;k++)vis[sg[j]^sg[k]]=1;
for(int j=0;j<100;j++)if(!vis[j])
{sg[i]=j;break;}
}
}
int main(){
int n,cs=1;
cal_sg();
while(scanf("%d",&n) && n){
int i;
for(i=0;i<n;i++)scanf("%d",&a[i]);
int ans=0;
for(i=0;i<n;i++)if(a[i]&1)ans^=sg[n-i-1];
printf("Game %d: ",cs++);
if(ans==0)printf("-1 -1 -1\n");
else{
int k,j,flag=0;
for(i=0;i<n-1;i++)if(a[i]){
for(k=i+1;k<n;k++){
for(j=k;j<n;j++){
if(!(ans^sg[n-i-1]^sg[n-k-1]^sg[n-j-1]))flag=1;
if(flag)break;
}
if(flag)break;
}
if(flag)break;
}
printf("%d %d %d\n",i,k,j);
}
}
return 0;
}
相关文章推荐
- 【UVA1378】A Funny Stone Game (博弈-求SG值-输出方案)
- UVA 1378 A Funny Stone Game (经典博弈)
- uva 1378 A Funny Stone Game 博弈/组合游戏 sg定理
- UVA 1378 - A Funny Stone Game(博弈)
- UVA - 1378 A Funny Stone Game (SG定理)
- Uva 1378 - A Funny Stone Game
- sg函数_______A Funny Stone Game(uva 1378)
- uva 1378 - A Funny Stone Game(组合游戏)
- [UVA1378] A Funny Stone Game && SG函数
- uva 1378 - A Funny Stone Game(组合游戏)
- UVa 1378 A Funny Stone Game [博弈论 SG函数]
- uva 1378 A Funny Stone Game(博弈论)
- UVALive 3668 A Funny Stone Game(博弈)
- LA 3668 A Funny Stone Game(博弈,SG定理)
- [nim博弈扩展 sg函数] UVALive 3668 A Funny Stone Game
- UVALive-7278 - Game of Cards【博弈】【sg定理】
- UVALive 3668 A Funny Stone Game
- [博弈]A Funny Stone Game
- uva_10891 - Game of Sum( 博弈区间DP )
- Something about 博弈(POJ 3922 A simple stone game)