资源简介
glr7nu.rar

代码片段和文件信息
#include
#include
#include
#include
int Fake(int A[]int lint rint ×);
//输出假币
int Weight(int A[]int lint r);
//累加l到r的和
int HaveFakeCoin(int A[]int lint rint ×);
//判断l到r有没有假币
int JudgeTwo(int A[]int lint rint ×);
//就剩连个元素时找出假币
int JudgeThree(int A[]int lint rint ×);
//剩余三个元素
int times=0;
bool weight=false;//保存检测出的假币硬币是还是重
int length=0;
void main()
{
int times=0;
int A[500];
int n=0;
int pos=0;
srand((long)time(NULL));
do
{
printf(“请输入金币的个数:\n“);
scanf(“%d“&n);
length=n;
for(int i=0;i {
A[i]=0;
}
printf(“请输入假币的位置:\n“);
scanf(“%d“&pos);
int rands=0;
rands=rand()%2;
if(rands==0)
{
A[pos-1]=-1;
}
else
{
A[pos-1]=1;
}
for(i=0;i {
printf(“%d “A[i]);
}
printf(“\n“);
printf(“假币的在第%d个位置\n“Fake(A0n-1times)+1);//寻找假币的位置
if(weight)
{
printf(“比真币重:\n“);
}
else
{
printf(“比真币轻:\n“);
}
printf(“总共比较了%d次\n“times);
printf(“\n\n\n\n\n\n\n\t\t\t按任意键继续\n“);
getch();
times=0;
system(“cls“);
}while(true);
}
int Fake(int A[]int lint rint ×)
{
int mid=0;
int remainder=0;
do
{
mid=(l+r)/2;
remainder=(l+r)%2;
if(remainder==1)//偶数s
{
int result=0;
if(r==(l+1))
{
return JudgeTwo(Alrtimes);
}
result=HaveFakeCoin(Almidtimes);
if(result==-1)//如果左边有假币
{
r=mid;
}
else
{
if(result==1)//如果假币在右边
{
l=mid+1;
}
else//已经有假币的位置
{
if(A[result] {
weight=false;//轻
}
else
{
weight=true;//重
}
return result;
}
}
}
else //奇数
{
// printf(“l=%dmid=%dr=%d\n“lmidr);
if(Weight(Almid-1)==Weight(Amid+1r))
//如果左边和右边相同那么假币就是中间这个
{
printf(“到了“);
printf(“times=%d“times);
times++;
if(A[mid]>A[l])
{
weight=true;
}
else
{
weight=false;
}
return mid;
}
else
{
if(r==(mid+1))
{
return JudgeThree(Alrtimes);
}
int result=HaveFakeCoin(Almid-1times);
if(result==-1)//左边
{
r=mid-1;
}
else
{
if(result==1)//右边
{
l=mid+1;
}
else
{
if(A[result] {
weight=false;//轻
}
else
{
weight=true;//重
}
return result;//在这边已找到假币
}
}
}
}
}while(true);
return 0;
}
int Weight(int A[]int lint r)
{
int sum=0;
for(int i=l;i<=r;i++)
{
sum+=A[i];
}
return sum;
}
int HaveFakeCoin(int A[]int lint rint ×)
{
int mid=(l+r)/2;
int remainder=(l+r)%2;
if(remainder%2==1)//如果为偶数个
{
times++;
if(Weight(Almid)==Weight(Amid+1r))//如果两遍相同表示这边没有假币币,
//也就是这边都是真币
{
return 1;
}
else
{
return -1;
}
}
else //如果为奇数个
{
times++;
if(Weight(Almi
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4400 2008-11-11 21:44 假币\fakeCoin.cpp
文件 3429 2008-11-11 10:54 假币\fakeCoin.dsp
文件 524 2008-11-09 16:54 假币\fakeCoin.dsw
目录 0 2008-11-12 20:48 假币
----------- --------- ---------- ----- ----
8353 4
相关资源
- 51智能排课系统大课表版v5.1.3中文免费
- 用友U8新引入帐套后固定资产模块出错
- Beginning STM32: Developing with FreeRTOS libo
- 土木工程毕业设计(得了95分)
- 土木工程毕业设计 -大连理工大学
- 八重州 7800电路图 高清版
- PalmOS一些常识
- Palm OS应用程序设计指南
- Palm OS基础入门
- 通信原理第七版课后答案樊昌信.doc
- ALIENTEK战舰STM32F1 V3开发板原理图.rar
- [软件工程—实践者的研究方法].Roge
- pdfbox所需jar包
- Win98Dos启动盘的盘镜像纯净版
- DOS98.IMG启动文件
- Trojan-Qt5-Windows-0.0.4.rar
- 数字电路知识点汇总(精华版).doc
- SpringMVC文件上传与的实现.rar
- PID_AutoTune_v0.rar
- vspd7.2.308.zip
- 价值2k的H漫画小说系统
- Pythonamp;课堂amp;笔记(高淇amp;400;集第
- ddos压力测试工具99657
- UML建模大全
- 开源1A锂电池充电板TP4056原理图+PCB
- m1卡 ic卡可选择扇区初始化加密软件
- TSCC.exe
- FTP课程设计(服务端+客户端)
- 计算机图形学 边填充算法实现代码
- 电力系统潮流计算程序集合
评论
共有 条评论