1. 程式人生 > >C————5位運動員參加10米臺跳水比賽,對他們名次做出預測。

C————5位運動員參加10米臺跳水比賽,對他們名次做出預測。

1.  
5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果
A選手說:B第一,我第三。
B選手說:我第二,E第四。
C選手說:我第一,D第二。
D選手說:C最後,我第三。
E選手說:我第四,A第一。

比賽結束後,每位選手都說對了一半,請程式設計確定比賽的名次。

這個問題考到了我們對列舉的認識,接下來讓我們來試著解決這個問題:

#include<stdio.h>
int main()
{
	int A = 0,B = 0,C = 0,D = 0,E = 0;
	for(A=1;A<=5;A++)
	{
		for(B=0;B<=5;B++)
		{
			for(C=0;C<=5;C++)
			{
				for(D=0;D<=5;D++)
				{
					for(E=0;E<=5;E++)//這裡將所有人說的話羅列出來,並且每個人只說對了一半,所以他們每個人說的話加起等於1.
						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))
						{//因為名次是連續的,所以在這裡做個處理:假設A=4,B=2,C=2,D=3,E=5;對假設作出判斷下面進行分析
							int num = 0;
							int flag = 1;
							num |=(1<<(A-1));
							num |=(1<<(B-1));
							num |=(1<<(C-1));
							num |=(1<<(D-1));
							num |=(1<<(E-1));
							while(num)//判斷名次是否連續,如果連續就輸出
							{
								if(num%2==0)
								{
									flag=0;
								}
								num/=2;
							}
							if(flag==1)
								printf("A=%d B=%d C=%d D=%d E=%d\n",A,B,C,D,E);
						}
				}
			}
		}
	}
	return 0;
}
			

上面對ABCDE做出了假設下面是對如何實現判斷的演算法的分析:



相關推薦

C————5運動員參加10跳水比賽他們名次做出預測

1.  5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果A選手說:B第一,我第三。B選手說:我第二,E第四。C選手說:我第一,D第二。D選手說:C最後,我第三。E選手說:我第四,A第一。比賽結束

問題: 5運動員參加10跳水比賽有人讓他們預測比賽結果 A選手說:B第二我第三; B選手說:我第二E第四; C選手說:我第一D第二; D選手說:C最後我第三;

5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果   A選手說:B第二,我第三;   B選手說:我第二,E第四;   C選手說:我第一,D第二;   D選手說:C最後,我第三;   E選手說:我第四,A第一;   比賽結束後,每位

5運動員參加10跳水比賽有人讓他們預測比賽結果 確定比賽名次

5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果 A選手說:B第一,我第三。 B選手說:我第二,E第四。 C選手說:我第一,D第二。 D選手說:C最後,我第三。 E選手說:我第四,A第一。 比

5運動員參加10跳水比賽有人讓他們預測比賽結果 ;楊輝三角形

1、5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果 A選手說:B第二,我第三; B選手說:我第二,E第四; C選手說:我第一,D第二; D選手說:C最後,我第三; E選手說:我第四,A第一; 比賽結束後,每位選手都說

5運動員參加10跳水比賽+日本某地發生了一件謀殺案+在螢幕上列印楊輝三角

5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果 A選手說:B第二,我第三; B選手說:我第二,E第四; C選手說:我第一,D第二; D選手說:C最後,我第三; E選手說:我第四,A第一; 比賽結束後,每位選手都說對了一半,請程式設計確定比賽的名次。 #include <s

C語言:小球從100的地方下落求第10次反彈高度10次落地總高度

#include<stdio.h> #include<assert.h> //小球從100米的地方下落,求第10次反彈高度,前10次落地總高度 int main() { double a=100;//宣告雙精度型別初值100米 dou

C#小練習(輸入10個數存入陣列中求最大值、最小值和平均值.)

/* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * All rights reserved. * 檔名稱:

C# WPF MVVM QQ密碼管家項目(7QQ登錄界面的自動輸入思路分析)

gdi qq密碼 分享圖片 進行 技術 實現 密碼 窗體 rdquo 7 - 對QQ登錄界面的自動輸入思路分析 在開始寫代碼之前我們得好好研究一下QQ的登錄界面。本項目中操作的QQ版本號為:8.9.5(22062) 自動輸入在c#開發上方法有二:1是獲取輸入框控件句柄然

有哪些10分鐘就能學會人生有益的知識或技能?

1.人們傾向於記住最先發生的事情和最後發生的事情。中間的事情記不清楚。所以,如果你要做自我介紹的話,最好做第一個或者最後一個。面試的時候,也是一樣的。 2.如果你在酒吧或者前臺工作,在你身後放一面鏡子。這樣的話,當顧客發脾氣的時候,就能從鏡子裡看到自己的醜惡嘴臉。一面鏡子可以

從0到100隨機抽10個不同的數然後放入陣列中再按順序打印出來

import java.util.Random; public class Qushu_dayin { public static void main(String[] args) {

跳水比賽,8個評委打分。運動員的成績是8個成績去掉一個最高分 去掉一個最低分剩下的6個分數的平均分就是最後得分 使用一維陣列 2.請把打最高分的評委和最低分的評委找出來 3.找出最佳評委

package com.my; import java.io.*; /**  * 1.跳水比賽,8個評委打分。運動員的成績是8個成績去掉一個最高分, 去掉一個最低分,剩下的6個分數的平均分就是最後得分。 使用一維陣列  * 2.請把打最高分的評委和最低分的評委找出來。 3.

Dev-C++ 5.10 使用指南

spa mes str space ios div 光標 return 一個 1 /* 2 Name: Dev-C++ 5.10 使用指南 3 File: DebugTest.cpp 4 Copyright: 5 Author:

其他進制轉化為10制和10制轉化為其他進制(均一個函式)c++

今天專門抽出來一點時間來弄一下,進位制轉化的問題,不論是其他進位制轉化為10進位制還是10進位制轉化為其他進位制,均使用同一個函式來完成,只需要手動輸入從哪個進位制轉化為哪個進位制。 程式碼如下: #include <iostream> #include <cmat

C語言 給一個不多於5的正整數

1.求出他是幾位數 2.分別輸出每一位數字 3.逆序輸出數字 #include<stdio.h> int main() { int a,ww,qw,bw,sw,gw; printf("請輸入一個不多於5位的正整數"); scanf("%d",&a); if

CentOS 5 8 asterisk-1 8 10 1 安裝之一 安裝新增藍芽支援新增AMR-NB audio c

                為什麼我要安裝比較老的asterisk-1.8.10.1,而不是更加新的穩定版本?因為我還要加AMR-NB audio codec。CentOS使用者準備:useradd asterisk1.下載CentOS 5.8國內高速下載http://mirrors.163.com/ce

BASIC-12 基礎練習 十六進制轉八進制 (c++)兩種解法轉換2進制或10

 基礎練習 十六進位制轉八進位制   時間限制:1.0s   記憶體限制:512.0MB        錦囊1 使用二進位制。 錦囊2 先把十六進位制轉成二進位制,每位十六進位制正好

C# 2進制、8進制、10制、16進制...各種進制間的輕鬆轉換

在.NET Framework中,System.Convert類中提供了較為全面的各種型別、數值之間的轉換功能。其中的兩個方法可以輕鬆的實現各種進位制的數值間的轉換: Convert.ToInt32(string value, int fromBase): 可以把不同進位制數