%%问题描述:在n枚外观相同的硬币中,有一枚是假币,并且已知假币较轻。
%%通过一架来任意比较两组硬币,从而得知两组硬币的重量是否相同,或者哪一组更轻一些,
%%假币问题要求设计一个高效的算法来检测出这枚假币。
% 最自然的想法就是一分为二,也就是把n枚硬币分成两组,每组
% 有?n/2?枚硬币,如果n为奇数,就留下一枚硬币,然后把两组硬
% 币分别放到天平的两端。如果两组硬币的重量相同,那么留下的硬币就
% 是假币;否则,用同样的方法对较轻的那组硬币进行同样的处理,因
% 为假币一定在较轻的那组里。
% 考虑不是把硬币分成两组,而是分成三组?
% 1. 如果n等于1,则该硬币即为假币,输出对应的序号,算法结束;
% 2. 计算3组的硬币个数num1、num2和num3;
% 3. add1 = 第1组硬币的重量和;add2 = 第2组硬币的重量和;
% 4. 根据情况执行下述三种操作之一:
% 4.1 如果add1小于add2,则在第1组硬币中查找;
% 4.2 如果add1大于add2,则在第2组硬币中查找;
% 4.3 如果add1等于add2,则在第3组硬币中查找;
clc;
clear;
N=0;
while( N<=1) %判断N,N要是整数且N>1 判断这里写得不好
N=input('请输入硬币的数量N(N>1且N是整数)');
temp=fix(N);
if temp~=N;
N=input('请输入硬币的数量N(N>1且N是整数)');
end
end
A=ones(1,N)*2; %A为硬币的质量序列,我们假设真币的质量为2,假币为1
subscript=fix(1+N*rand(1)); %subscript为随机生成假币的序号
A(subscript)=1; %把假币序号的质量赋值为1
low=1; high=N; n=N;
result=Coin(A,low,high,n) %调用函数
假币问题的MATLAB求解
5星 · 超过95%的资源 需积分: 26 88 浏览量
2014-04-10
22:18:35
上传
评论 1
收藏 1KB RAR 举报
baifuk123
- 粉丝: 0
- 资源: 2
最新资源
- 基于SpringBoot+Vue3快速开发平台、自研工作流引擎源码设计.zip
- docker安装部署全流程
- 基于树莓派的人脸识别系统python源码+项目部署说明+超详细代码注释.zip
- Python和R爬取分析赶集网北京二手房数据.zip
- Python和R爬取分析赶集网北京二手房数据.zip
- Java知识体系最强总结(2021版).txt
- Python知识点Python知识点Python知识点Python知识点Python知识点PythonPython知识点.txt
- Java开发基于seetaface6的人脸识别(活体检测)的封装源码.zip
- JSP在线失物招领管理平台源码.zip
- JSP在线旅游美食展现管理系统源码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈