八枚银币算法
来源:互联网 发布:淘宝包邮标签怎么设置 编辑:程序博客网 时间:2024/06/09 13:17
说明现在有八枚银币,已知其中一枚是假币,其重量不用于真币,
但不知道是较轻还是较重,如何使用天平以最少的比较次数,决定
出哪枚是假币,并得知假币是较轻还是较重。
#include <stdio.h>#include <stdlib.h>#include <time.h>void finallycompare(int coins[], int i, int j, int k){if(coins[i]>coins[k]){printf("第%d枚银币为假币,较重。",i+1);}else{printf("第%d枚银币为假币,较轻。",j+1);}}void compareeightcoins(int coins[]){if(coins[0]+coins[1]+coins[2]==coins[3]+coins[4]+coins[5]){if(coins[6]>coins[7]){finallycompare(coins,6,7,0);}else{finallycompare(coins,7,6,0);}}if(coins[0]+coins[1]+coins[2]>coins[3]+coins[4]+coins[5]){if(coins[0]+coins[3]==coins[1]+coins[4]){finallycompare(coins,2,5,0);}if(coins[0]+coins[3]>coins[1]+coins[4]){finallycompare(coins,0,4,1);}if(coins[0]+coins[3]<coins[1]+coins[4]){finallycompare(coins,1,3,0);}}if(coins[0]+coins[1]+coins[2]<coins[3]+coins[4]+coins[5]){if(coins[0]+coins[3]==coins[1]+coins[4]){finallycompare(coins,5,2,0);}if(coins[0]+coins[3]>coins[1]+coins[4]){finallycompare(coins,3,1,0);}if(coins[0]+coins[3]<coins[1]+coins[4]){finallycompare(coins,4,0,1);}}}int main(){int coins[8];int i;srand(time(NULL));for(i=0;i<8;i++){coins[i]=10;}printf("请输入假币的重量(比10大或小) : ");scanf("%d", &i);coins[rand()%8]=i;compareeightcoins(coins);printf("列出所有银币重量:\n");for(i=0;i<8;i++){printf(" %d ", coins[i]);}printf("\n");return 0;}
阅读全文
1 0
- 八枚银币算法
- 算法思考---------八枚银币
- 每天一算法(八枚银币)
- 每日一算法:八枚银币
- 八枚银币
- 八枚银币
- 八枚银币
- 数据结构经典算法学习之八枚银币(简单决策树)
- JAVA求解八枚银币
- Algorithm Gossip:八枚银币
- Algorithm Gossip (9) 八枚银币
- 银币组合算法分析
- 寻找假银币算法
- 分治算法寻找假银币问题(六)
- 算法八
- 抛银币 概率题
- 算法设计--八枚硬币问题
- 算法设计--八枚硬币问题
- Tcp定时器调研
- 详解matlab中.*和*的区别
- Java中indexof()的用法
- win10 安装运行VC++ 6.0
- OpenGl的安装
- 八枚银币算法
- Android Studio 2.3.1导出jar文件不能生成release解决办法
- android常见问题QA(长期更新)
- 多点触控
- Android
- ecnu 核反应控制 数学
- 分布式Web服务器架构
- 自己积累的类库说明
- Spring Boot(MVC)下空间字段(Geometry)与geojson的自动转换