猜五个人座位顺序游戏,给出的条件是:每个说出左边和右边是谁,只有一边说的对的,另一边是错的.

     这个游戏的座位顺序是根据给出的条件来找出顺序的,先设五个人分别为A B C D E,根据有序组合可以有5*4*3*2*1=120种,又由于实际情况这120种是有重复的(五个是围成一圈).而实际条件在编写程序时是未知的,故应该吧120种情况全部列举出来,依次与ABCDE说的话是否都符合都左右只有一边说的是对的,若条件符合,则就是答案,为避免重复答案,所以结束程序(答案唯一).

 

     首先我,我们应该把ABCDE用一个二维数组存起来,数组的行下标表示是谁说的话,列下边代表内容.既然要排出ABCDE的顺序,当然要有结果了,所以结果用一个一维数组存起来,这个一维数组也是120种的一种,所以每列出一种就存在一维数组种.那要如何列出120种呢,用5个for循环可以做到

 

用5个循环列举出A(0) B(1) C(2) D(3 E(4)所有的排列组合.即相当于0 1 2 3 4有序的排列组合.因为不01234不可以重复,所以在for循环里必须满足互不相等,否则用continue跳出本循环执行下一个循环.

 

     得到的每种组合,得到的是下标的值,为了与ABCDE说的话对应,我用强制转换为char型,即+65即可得到字母组合.组合分别与二维数组的列相比较,若相等,则进一步比较左边和右边与5个for循环得到的组合相等,这个可用或异^来计算,若只有一个对,则用一个计数器count(初值为0)+1,若这个组合全部count=5,则组合符合条件打印组合并执行程序的最后一条语句,不然就进行下一个循环,得到下一个组合. 

 

   代码如下:

 

   

这个代码很大一个缺点就是很难读,因为太多循环,层次不清,还有就是只可以是五个人的游戏,要是多人还需要改代码.有些应该用函数实现的.

菜鸟的代码,希望大家多多纠正,谢谢!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值