八枚硬币问题:

#include<iostream>
using namespace std;
void print(int jia,int zhen,int i)
{if(jia>zhen)cout<<"位置在:"<<(i + 1)<<"是假币!"<<"且偏重!";elsecout<<"位置在:"<<(i + 1)<<"是假币!"<<"且偏轻!";
}
void compare(int a,int b,int zhen,int index1,int index2)
{if(a == zhen)print(b,zhen,index2);elseprint(a,zhen,index1);
}
int main()
{int arr[8];cout<<"请输入八枚硬币:"<<endl;for(int i = 0; i < 8; i++){cin>>arr[i];}int abc = arr[0] + arr[1] + arr[2];int def = arr[3] + arr[4] + arr[5];int a = arr[0];int b = arr[1];int c = arr[2];int d = arr[3];int e = arr[4];int f = arr[5];int g = arr[6];int h = arr[7];if(abc > def){if((a + e) > (d + b)){compare(a,d,g,0,3);}else if((a + e) == (d + b)){compare(c,f,g,2,5);}else{compare(b,e,g,1,4);}}else if(abc == def){if(g == a){print(h,g,7);}else{print(g,h,6);}}else{if((a + e) > (d + b)){compare(b,e,g,1,4);}else if((a + e) == (d + b)){compare(c,f,g,2,5);}else{compare(a,d,g,0,3);}}return 0;
}

N枚硬币问题:

程序思路:

先从这n个硬币当中任意选择两个硬币比较重量,如果相等,则说明这两个都是真币,然后就可以拿这个真币的重量去和其他硬币一一比较,如果不相等,那么与其比较的那个硬币便是假币。

#include<iostream>
using namespace std;
int main()
{int n;cin>>n;int a[n];for(int i=0;i<n;i++){cin>>a[i];}int sum=0,zhen;for(int i=1;i<n;i++){if(a[0]==a[i]){zhen=a[0];break;}sum++;}if(sum==n-1){if(a[0]>a[1])cout<<"第1个是假币,且偏重"<<endl;elsecout<<"第1个是假币,且偏轻"<<endl;}for(int i=0;i<n;i++){if(a[i]!=zhen){if(a[i]>zhen)cout<<"第"<<i+1<<"个是假币,且偏重"<<endl;elsecout<<"第"<<i+1<<"个是假币,且偏轻"<<endl;break;}}return 0;
}

八枚硬币问题(减治法)和n枚硬币问题相关推荐

  1. n枚硬币问题(假币问题)——分治法(减治法)

    1.8枚硬币问题 在8枚外观相同的硬币中,有一枚是假币,并且已知假币与真币的重量不同,但不知道的是假币与真币相比较是轻还是重.可以通过一架天平来比较两组硬币: 减治法将原问题一分为三,8枚硬币分别表示 ...

  2. (2013.05.05)N枚硬币找1枚假币

    N枚硬币找1枚假币 ――Neicole (2013.05.05) 0. 问题描述 共有N枚硬币,一个天平,在这N枚硬币中有一枚假币,设法找出该枚假币. 1. 原理示例(减治法) 概要: 如上图所示,假 ...

  3. 【数学】一个奇技淫巧:如果用一枚硬币生成任意概率——比如1/π?

    刚才舍友拿Matrix67博客里的一个问题来考我--如果用一枚硬币产生1/π的概率,没想出来怎么做,看了下解答感觉非常简单而且巧妙. Matrix67原博客里的文章--26 个比较概率大小的问题,这个 ...

  4. Java实现8枚硬币问题(减治法)

    1 问题描述 在8枚外观相同的硬币中,有一枚是假币,并且已知假币与真币的重量不同,但不知道假币与真币相比较轻还是较重.可以通过一架天平来任意比较两组硬币,设计一个高效的算法来检测这枚假币. 2.1 减 ...

  5. 减治法解决八枚硬币问题/假币问题(JAVA)----二分,三分,不知轻重的情况

    八枚硬币问题 在八枚外观相同的硬币中,有一枚是假币,并且已知假币与真币的重量不同,但不知道假币与真币相比较轻还是较重.可以通过一架天平来任意比较两组硬币,设计一个高效的算法来检测出这枚假币. 我们先假 ...

  6. 减治法在组合问题中的应用 ——8枚硬币问题

    实验题目 在8枚外观相同的硬币中,有一枚是假币,并且已知假币与真币的重量不同,但不知道假币与真币相比较轻还是较重.可以通过一架天平来任意比较两组硬币,设计一个高效的算法来检测这枚假币. 实验要求 1) ...

  7. 假币问题(八枚硬币及n枚硬币)

    八枚硬币 问题描述 1.有八枚外观相同的硬币,其中有一枚是假币 2.不知道假币较重还是较轻 可以用减治法来求解假币问题 算法思想 1.把硬币按照下标(0-2.3-5.6-7)分成三组 2.比较第一组( ...

  8. 减治法(Decrease and Conquer)

    减治法 减治法是一种一般性的算法设计技术,它利用了一个问题给定实例的解和同样问题较小实例的解之间的关系.一旦建立了这样一种关系,我们既可以自顶至下(递归)也可以自底至上地运用它(非递归). 减治法有3 ...

  9. n枚硬币找出假币问题(包含一枚假币)

    问题描述: 在n枚外观相同的硬币中,有一枚是假币,并且已知假币与真币的重量不同,但不知道假币与真币相比较轻还是较重.可以通过一架天平来任意比较两组硬币,设计一个高效的算法来检测这枚假币(以下提供两种方 ...

最新文章

  1. Mysql主从同步延迟问题及解决方案
  2. c语言求方程组的自然数解,多元一次线性方程自然数解的算法解决办法
  3. 微软统一预训练语言模型UniLM 2.0解读
  4. shell实现简单的进程监控脚本
  5. LiveWallPaper 让您的壁纸动起来 连载(三)——OpenGL ES特辑
  6. Educational Codeforces Round 18
  7. java把按钮和键盘对应_按键与按钮的区别?
  8. proteus三输入与非门名字_dnf冒险团名字怎么改?冒险团名称修改方法
  9. C语言为内存分配空间(代码段、数据段、bss段、存储类、变量的生命周期)
  10. 人工势场法matlab讲解_【机器人路径规划】人工势场法
  11. 2022最新版影视小程序源码支持josn官解+卡密系统
  12. 大文件(10G以上吧)的处理
  13. 怎么用计算机求原函数,科学计算器使用教程_科学计算器怎么解方程
  14. python繁简体转换
  15. 创业公社:亦庄分中心开业 借好创业东风
  16. ubuntu系统下耳机没声音(已解决)
  17. 基于Node.js的3DTiles三维倾斜摄影模型爬虫
  18. NEFU 大一寒假训练六(二分查找)题目预测
  19. STM32F407 ADC+DMA+定时器 定时采样模拟量
  20. 物联网概念火热,靠技术如何落地?

热门文章

  1. BZOJ1930: [Shoi2003]pacman 吃豆豆
  2. python中列表的声明,查询,修改,删除 del 和添加 append,insert
  3. 《疯狂JAVA讲义》学习笔记(一)
  4. Python 字符串类型 - 详细
  5. 国内排名前几的客流统计系统公司有哪些?
  6. A矩阵与B矩阵相似充要条件?
  7. 银行金融 词汇 简写 中英文对照
  8. mysql实现悲观锁_mysql悲观锁怎么实现?
  9. 阿里云oss h5页面上传实践
  10. 利率为0.8%,求需要多少个月才能还清?