c语言练习题(面试题)
来源:互联网 发布:js中单选按钮点击事件 编辑:程序博客网 时间:2024/05/21 07:05
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第一,我第三。
B选手说:我第二,E第四。
C选手说:我第一,D第二。
D选手说:C最后,我第三。
E选手说:我第四,A第一。
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
解析如下:
这道题的想法是这样子的,利用穷举的方法列出所有的情况,可以使用一种比较简单的思维去考虑这个问题,定义5个变量,使它本身的值就代表它的名次,用五层for循环,这样可以列出所有可能的情况,但是需要我们自己来判断还有哪些隐含的条件没有用到呢?
可以结合实际生活中的情况,名次不可能是不连续的,例如:名次不可能是(11245)其中没有第三名,这根本不现实,所以排除掉这些情况就可以了,
#pragma warning (disable : 4996)#include<stdio.h>#include<stdlib.h>int main(){int a = 1;int b = 1;int c = 1;int d = 1;int e = 1;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;val |= 1<<(a - 1);val |= 1<<(b - 1);val |= 1<<(c - 1);val |= 1<<(d - 1);val |= 1<<(e - 1);//将1放置在(a.b.c.d.e)各自的名次上,//然后再将所有的值进行或运算while (val){if ((val % 2) == 0)//如果有不连续的,例如1 1 3 4 5,则排除这种可能{flag = 0;}val = val>>1;}if (flag != 0){printf("%d %d %d %d %d\n",a,b,c,d,e);}}system("pause");return 0;}
0 0
- c语言练习题(面试题)
- C语言面试题
- C语言面试题
- C语言面试题
- C语言面试题
- c语言面试题
- c语言面试题
- C语言面试题
- c语言面试题
- C语言面试题
- C语言面试题
- c语言面试题
- C语言面试题
- C语言面试题
- C语言面试题
- c语言面试题
- C语言面试题
- C语言面试题
- PMAC 误差补偿的方法及步骤
- AndroidStudio的快捷键大全
- Android ---ListView 的初体验
- windows 64 curl 命令的使用
- yum命令基本用法
- c语言练习题(面试题)
- oracle 实现插入自增列
- Spring boot打包时报错(spring boot Unable to find a single main class from the following candidates)
- 应用启动黑屏处理
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
- MVC,MVVM简单理解
- 关于Toleft的一点思考
- 标识符及命名规范
- 06、C语言-结构体