| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1254 人关注过本帖
标题:用编程解决推理问题
只看楼主 加入收藏
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
 问题点数:0 回复次数:13 
用编程解决推理问题

灌水问题,现有1升,2升,3升,4升,5升,各4桶(5×4=20),甲乙两个人轮番往一个27升的坛子里灌水(甲乙甲乙甲乙。。),只许用上面的20桶水,不许半桶,不许小桶之间来回倒,倒过之后的空桶不许再灌水。最后一个灌满27升坛子的人获胜,超过27升者算输。


问题:

A,甲或者乙,是否有100%把握获胜?
B,如果你是甲,你第一桶水会选择几升?


用编程分析出所有可能的情况~~我的想法还不完善~~谁来尝试一下

搜索更多相关主题的帖子: 推理 
2005-11-16 18:58
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
24-》18-》12-》6

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2005-11-16 19:21
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
B,如果你是甲,你第一桶水会选择几升?
//3升

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2005-11-16 19:21
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

编程找出所有情况~哎~你的眼睛一定是长到了脚上了...


淘宝杜琨
2005-11-16 19:48
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
我笨,不懂你意思,我分析得还不够细致么?


此源码由BC-CN论坛C源码染色机染色程序作者:knocker
BC-CNCode BUG版 如有差错请见谅

#include <stdio.h>
#include <stdlib.h>
int PC[5]=
{
4,4,4,4,4
}
;
int YOU[5]=
{
4,4,4,4,4
}
;
int TOTAL=27 ;
void PPrintf(int pc[],int you[],int total);
int PCfun(int total);
int YOUfun();
int init();
int main()
{
char key ;
while(1)
{
printf("请选择谁先选 1。你 2.电脑\n");
do
{
key=getchar();
}
while(!(key=='1'||key=='2'));


if(key=='1')
{
PPrintf(PC,YOU,TOTAL);
TOTAL-=YOUfun();
}

while(TOTAL)
{
PPrintf(PC,YOU,TOTAL);
TOTAL-=PCfun(TOTAL);
if(TOTAL)
{
PPrintf(PC,YOU,TOTAL);
TOTAL-=YOUfun();
}
}
getchar();
printf("还要再来么? y \n");
key=getchar();
if(key!='y')break ;
TOTAL=init();
}
}
int init()
{
for(int i=0;i<5;i++)
{
PC[i]=YOU[i]=4 ;
}
return 27 ;
}
int PCfun(int total)
{
int i ;

if(total==0)
{
printf("你真强!我输了!\n");
return 0 ;
}
else if(total<6&&PC[total])
{
printf("你输了!我选 %2d\n",total);
return total ;
}
else
{
if(total%6&&PC[total%6-1])
{
PC[total%6-1]--;
printf("PC选择了 %2d\n",total%6);
return total%6 ;
}
else
{
while(1)
{
i=rand()%4 ;
if(PC[i])break ;
}
PC[i]--;
printf("PC选择了 %2d\n",i+1);
return i+1 ;
}
}
}
int YOUfun()
{
int i ;
printf("请选择灌多少升?\n");
while(1)
{
while(scanf("%d",&i)!=1)getchar();
if(i<1||i>5)
{
printf("请重选择,你的选择不合法!\n");
continue ;
}
if(YOU[i-1])
{
printf("你选了 %d 升\n",i);
YOU[i-1]--;
return i ;
}
else
{
printf(" %d 升的水已用完,请重选!\n",i);
}
}
}

void PPrintf(int pc[],int you[],int total)
{
printf("\n你现有:1升%2d,2升%2d,3升%2d,4升%2d,5升%2d \n",you[0],you[1],you[2],you[3],you[4]);
printf("PC现有:1升%2d,2升%2d,3升%2d,4升%2d,5升%2d \n",pc[0],pc[1],pc[2],pc[3],pc[4]);
printf("桶还能装下: %2d\n\n",total);
}

索性给你写一个

[此贴子已经被作者于2005-11-16 21:17:13编辑过]


偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2005-11-16 20:02
simpley
Rank: 1
等 级:新手上路
帖 子:262
专家分:0
注 册:2005-2-23
收藏
得分:0 
有一种很有意思的游戏不知道你玩儿过没有,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。
(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。
显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的取法,那么先取者肯定获胜。总之,要保持给对手留下(m+1)的倍数,就能最后获胜。


神vLinux飘飘的问题可以看成是27个物品,最多拿5个.因为一个数重复拿最多只能是4次(同样的升数只有4桶),而24-》18-》12-》6恰好是4次,所以可以保证满足条件.

myQQ::445750010
2005-11-17 18:12
simpley
Rank: 1
等 级:新手上路
帖 子:262
专家分:0
注 册:2005-2-23
收藏
得分:0 
看错了
24-》18-》12-》6确实是不对的

myQQ::445750010
2005-11-17 18:25
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
收藏
得分:0 

有种算法叫做敌对搜索,是解决这类问题的,或许神可以去研究一下把。
而且感觉这类问题不是推理,而是博弈问题


我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2005-11-17 18:39
simpley
Rank: 1
等 级:新手上路
帖 子:262
专家分:0
注 册:2005-2-23
收藏
得分:0 
这个题太难了.
上面的那个程序是不对的.你让电脑先走,然后,你一直拿3,就会发生错误(超过了4个3)

myQQ::445750010
2005-11-17 18:46
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
怎么能拿5个3?你根本没有5个3。

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2005-11-17 21:03
快速回复:用编程解决推理问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040292 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved