当前位置:  技术问答>java相关

120分求解一个到底谁说谎的问题!盼望高手指点!

    来源: 互联网  发布时间:2017-03-09

    本文导语:  问题:张三说李四说谎,李四说王五说谎,王五说张三、李四都说谎,问三人到底谁说谎? http://expert.csdn.net/Expert/topic/1225/1225370.xml?temp=.685528 本人解法如下: #include  /**    *p,q,r 分别代表张,李,王是否说真话.  ...

问题:张三说李四说谎,李四说王五说谎,王五说张三、李四都说谎,问三人到底谁说谎?

http://expert.csdn.net/Expert/topic/1225/1225370.xml?temp=.685528

本人解法如下:

#include 

/**
   *p,q,r 分别代表张,李,王是否说真话. 
 * 他们说的话可以转化为: p --> ┑q; q --> ┑r;
 *  r --> ┑p∧r --> ┑q ;并且,只有一个断言为假!( 离散数学 )
 *  分别用P、Q、R 代表这三个断言
 */
int p,q,r,P,Q,R,S;
int COUNT;/* 说真话的人的个数 */


/* 打印结果 */
void printResult()
{
if( !p )
printf("n-------------------ZhangSan laying!-------------------n");
if( !q )
printf("n------------------- LiSi Laying! -------------------n");
if( !r  )
printf("n------------------  WangWu Laying! -------------------n");

printf("n %5d %5d %5d n",p,q,r);

}

/* 统计断言为真的个数*/
void getCount()
{
COUNT = 0;
if( P )
COUNT ++ ;
if( Q ) 
COUNT ++ ;
if( R && S )
COUNT ++ ;
}


/* 检查当前答案是否为解 */
int isResult()
{
getCount();

if( COUNT == 3 && p + q + r == 2 )
return 1;
else 
return 0;
}


/* 判断断言的真假 */
void setPQR()
{
if( p == 0 )
P = 1;
else if( q == 1){
  P = 0;
 }
 else {
 P = 1;
 }

if( q == 0 )
Q = 1;
else if( r == 1) {
  Q = 0;
 }
 else {
 Q = 1;
 }

if( r == 0 )
R = 1;
else if( p == 1) {
  R = 0;
 }
 else {
  R = 1;
 }

if( r == 0 )
S = 1;
else if( q == 1) {
  S = 0;
 }
 else {
  S = 1;
 }
}


/**
 * leemingjun 2002-12-3 Tc 2.0下调试通过
 */
void main()
{

int FOUND = 0;
for( p = 0 ; p 

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求解 求解 求解
  • Linux Shell编程从初学到精通 第四章课后习题2 求解
  • 有限元求解器 GetDP
  • 偏微分方程求解工具箱 DUNE
  • linux命令求解释....
  • 偏微分方程求解框架 Overture
  • 100分求解!!!!!
  • 编译内核时候出现的问题,求解
  • makefile求解
  • 求解ucos ii的一句代码
  • 求助linux下mysql 求解!
  • 求解啊,centos下 shutdown -h now 无效??
  • 求解windows下硬盘安装linux如何用linux引导
  • 关于linux shell的一个不明白的地方。求解
  • solaris安装不上,求解.............
  • [FreeBSD] 大神,求解,control socket : can‘t to any socket
  • ubuntu12.04求解
  • 100分求解如何查看内存最高使用值!!
  • 高分求解---如何在DOS下查杀欢乐时光病毒?用哪种杀毒软件?Windows98没法进入了!
  • 求解struct的大小


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3