编程解决实际问题--预测比赛结果,确定凶手

2.

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果

A选手说:B第一,我第三。

B选手说:我第二,E第四。

C选手说:我第一,D第二。

D选手说:C最后,我第三。

E选手说:我第四,A第一。

比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

#include <stdio.h>
int main()
{
    int a,b,c,d,e; 
    for(a=1;a<=5;a++)
      for(b=1;b<=5;b++)
        for(c=1;c<=5;c++)
          for(d=1;d<=5;d++)
             for(e=1;e<=5;e++)
                 if((b==1)+(a==3)==1&&
                    (b==2)+(e==4)==1&&
                    (c==1)+(d==2)==1&&
                    (c==5)+(d==3)==1&&
                    (e==4)+(a==1)==1)
                 {
                  int val=0;
                  int flag=1;
                     printf("%d %d %d %d %d\n",a,b,c,d,e);  
                     val |=(1<<(a-1));       //移位
                     val |=(1<<(b-1));
                     val |=(1<<(c-1));
                     val |=(1<<(d-1));
                     val |=(1<<(e-1));
                     while(val)
                     {
                      if(val%2==0)
                      {
                       flag=0;
                       val/=2;
                      }
                     }
                     if(flag==1)
                     {
                      printf("%d %d %d %d %d\n",a,b,c,d,e);
                     }
                  break; 
                 }
 return 0;
}

对于这个程序中,每个人都有可能是1--5的名次,可以借用for循环进行控制,在写程序中会遇到输出好多的结果的问题,但是这些结果,有些是有明显错误的。如果进行排除,那么只剩下一种合理的情况。程序中,我们可以借用二进制的移位来解决这个问题,最终只能得到一种结果。

3.

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。

A说:不是我。

B说:是C。

C说:是D。

D说:C在胡说

已知3个人说了真话,1个人说的是假话。

现在请根据这些信息,写一个程序来确定到底谁是凶手。

#include<stdio.h>
int main()
{
    int  peo=0;
    for(peo=‘A‘;peo<=‘D‘;peo++)
   {   
        if((peo!=‘A‘)+(peo==‘c‘)+(peo==‘D‘)+(peo!=‘D‘)==3)
        {
            printf("%c\n",peo);
        }
   }
return 0;
}
时间: 2024-10-13 06:19:00

编程解决实际问题--预测比赛结果,确定凶手的相关文章

编程解决谁是凶手的问题

*/--> pre.src {background-color: #292b2e; color: #b2b2b2;} pre.src {background-color: #292b2e; color: #b2b2b2;} pre.src {background-color: #292b2e; color: #b2b2b2;} pre.src {background-color: #292b2e; color: #b2b2b2;} 编程解决谁是凶手的问题 目录 1. 简介 2. 具体实现 1 简

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第一,我第三.B选手说:我第二,E第四.C选手说:我第一,D第二.D选手说:C最后,我第三.E选手说:我第四,A第一.比赛结束后,每位选手都说对了一半,请编程确定比赛的名次. 初次见到这种题,感觉很难将其抽象出来 用编程来解决它,通过查阅相关文档,终于灵光乍现!现总结思路如下: 通过排列组合知识,可以这样来理解  A B C D E五个人,每个人分别可以有五个位置去 即第一 第二...到第五 5个位置 ,于是这样下来就有25种情

五人预测比赛结果均答对一半,求比赛名次

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第一,我第三. B选手说:我第二,E第四. C选手说:我第一,D第二. D选手说:C最后,我第三. E选手说:我第四,A第一. 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次. 此题没说没有并列情况,所以我们要考虑到并列第几的情况,也要考虑到跨名次情况(即没有1就有2.3.4.5等).首先假设D选手说的"C最后"认为为C是第五,然后对于存在并列第几情况的问题,引进二进制.通过将1(0001)移位,再与0(00

跳水运动员预测比赛结果排名次问题

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第一,我第三. B选手说:我第二,E第四. C选手说:我第一,D第二. D选手说:C最后,我第三. E选手说:我第四,A第一. 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次. 可以并列: #include<stdio.h> #include<stdlib.h> main() { int a, b, c, d, e = 0; int flag=0; for (a = 1; a < 6; a++) {

编程解决Linux下解压zip乱码问题

JDK7 的ZipInputStream新添了一个构造方法,第二个参数可以指定字符集.这样一来我们就能用这个类写一个解压程序解决zip乱码问题了. 下面是代码: package cn.fh; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.nio.charset.Charset; import

编程:递归编程解决汉诺塔问题(用java实现)

//Li Cuiyun,October 14,2016.//用递归方法编程解决汉诺塔问题package tutorial_3_5;import java.util.*; public class HanoiTower { public static void main(String[] args) { // TODO Auto-generated method stub @SuppressWarnings("resource") Scanner sc=new Scanner(Syste

欧拉函数与欧拉打表解决实际问题

1.欧拉函数的定义: 欧拉函数phi(x)等于不超过x且与x互素的整数的个数. 2.欧拉函数的求法:推导过程见随笔<欧拉函数与容斥原理>. 3.代码实现欧拉函数: 1 int euler_phi(int n) 2 { 3 int m=(int)sqrt(n+0.5);//取一半就行,简化计算 4 int ans=n; 5 for(int i=2;i<=m;i++) 6 if(n%i==0)//找素因子 7 { 8 ans=ans/i*(i-1);//公式的运用 9 while(n%i==

Matlab与.NET混合编程解决人脸识别问题

原文:[原创]Matlab与.NET混合编程解决人脸识别问题 如果这些文章对你有用,有帮助,期待更多开源组件介绍,请不要吝啬手中的鼠标. [原创分享]Matlab.NET混编调用Figure窗体 http://www.cnblogs.com/asxinyu/archive/2013/04/14/3020813.html [原创]Matlab与.NET基于类型安全的接口编程入门 http://www.cnblogs.com/asxinyu/archive/2013/05/16/3082299.ht

C++ 多线程编程解决CPU占用率高问题

在用C++进行多线程编程的时候,时常需要写一些类似于死循环的结构来执行代码,这些死循环如果没有经过处理一直开着,那么CPU的占用率就会居高不下的做着很多无用的操做.为解决这个问题我们可以通过在各线程中的适当位置添加Sleep函数来休眠该线程,使其少做这些无用的操作.经过这个处理,正常能压缩掉一半以上的CPU占用.C++ 多线程编程解决CPU占用率高问题