主题:[讨论]第47次编程比赛趣味题
火海时代 [专家分:230] 发布于 2006-11-03 18:14:00
有n堆石头(0<n<1000),两个人轮流从任一堆中任取(只能在一堆中取,不能不取),取走最后一枚石头的胜利.
现在给出石头堆数n和每堆石头个数,你是先取的人,请判断有无必胜策略.
函数接口:
// n - n堆石头
// a - 有n个正整数(<100),是每堆石头的个数
// 返回true表示有必胜策略,false代表没有.
bool stone(int n, int *a);
本次比赛截止时间为星期天中午12点整
回复列表 (共11个回复)
沙发
火海时代 [专家分:230] 发布于 2006-11-03 18:16:00
比赛开始
板凳
freeze [专家分:80] 发布于 2006-11-03 19:47:00
应该是全部异或起来,为0的有必胜策略。。。
3 楼
无私地和别人交流 [专家分:2120] 发布于 2006-11-03 23:03:00
每次取多少个?好象应该有这个条件吧?
4 楼
feebright [专家分:0] 发布于 2006-11-04 02:46:00
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int stone(int n, int *a);
int PutOutStone(int n, int *a);
int main()
{
int *p;
int n;
int result;
printf("please input the n\n");
scanf("%d",&n);
printf("please inout the stone number:\n");
scanf("%d",p);
result = stone(n,p);
if (result == 1)
printf("true:有必胜策略\n");
else
printf("false:没有必胜策略\n");
getch();
return 0;
}
int stone(int n, int *a)
{
int a_person;
int b_person;
if (n == 1)
{
printf("a-person 拿走 所有的石头,a-person 胜利!");
return 1;
}
else if (n == 2)
{
printf("a-person 拿走第一堆的 a-1 个石头,\n");
printf("b_person 只能拿走第一堆剩下的石头,a-person再拿走第二堆所有的石头,\n");
printf("所以 a_person win!");
return 1;
}
else if (n >= 3)
stone(n-1, a);
}
5 楼
colorsouth [专家分:0] 发布于 2006-11-04 08:04:00
xuexi
6 楼
WinWing [专家分:3450] 发布于 2006-11-04 15:50:00
#include<stdio.h>
#include<math.h>
bool stone(int n,int *a)
{
int tmp,count;
int i,j,m;
count = 0;
m = 0;
for(i=0;i<n;i++)
if(a[i]<=1)count++;
for(i=0;i<n;i++)
{
if(a[i]==1)m++;
}
/*先考虑简单情况,所有堆都不大于1*/
if(count==n)
{
if(m%2==0)return true;
else return false;
}
/*否则通过异或结果判断是否平衡态*/
else
{
tmp = a[0];
for(j=1;j<n;j++)
{
tmp = tmp^a[j];
}
if(tmp==0)return true;
else return false;
}
}
/*for test
int main()
{
int a[1000];
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
printf("%d",stone(n,a));
return 0;
}
*/
7 楼
lt19870917 [专家分:750] 发布于 2006-11-04 16:47:00
二人游戏,用最大最小策略,并进行剪枝
8 楼
wshong [专家分:1880] 发布于 2006-11-04 17:02:00
这道题,好像40期左右出过了
9 楼
1121ywf [专家分:60] 发布于 2006-11-04 17:50:00
ghy
10 楼
1121ywf [专家分:60] 发布于 2006-11-04 17:53:00
呵呵 呵呵~ 呵呵·!!
我来回复