分治法-找硬币的游戏
2018-03-30 00:20
176 查看
哎呀,估计是闲得蛋疼,竟然接下了朋友的算法题,呵呵,结果整个就是一打脸,递归,我的痛呀!搞了半天,重新学习了一下分治算法(其中的快速排序),当然今天是以一个例子---找假币的游戏,来说明一下分治算法的原理过程。
废话不多说,直接上代码。(好吧,我已经说了好多废话,不差下面几句了。)
题目:已经有10枚硬币,其中有一枚假币,且假币的质量比真币的要小,求假币的位置?
#include<stdio.h>
#include<conio.h>
#define N 10
int FindCorn(int l[],int low,int high)
{
int sum1,sum2,i,j=0;
int length=high-low+1;
if(length%2==0)
{
length=length/2;
for(i=low,j=low+length;(i<=low+length-1)&&(j<=high);i++,j++)
{
sum1=sum1+l[i];
sum2=sum2+l[j];
}
if(sum1>sum2){FindCorn(l,low+length,high);}
else {FindCorn(l,low,low+length-1);}
}
else
{
length=length/2;
for(i=low,j=low+length+1;(i<=low+length-1)&&(j<=high);i++,j++)
{
sum1=sum1+l[i];
sum2=sum2+l[j];
}
if(sum1==sum2) return low+length;
if(sum1>sum2) {FindCorn(l,low+length+1,high);}
else{FindCorn(l,low,low+length-1);}
}
}
void main()
{
int i;
int corn
= { 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 };
i=FindCorn(corn, 0, N-1);
printf("假币的位置是%d",i+1);
getch();
}
废话不多说,直接上代码。(好吧,我已经说了好多废话,不差下面几句了。)
题目:已经有10枚硬币,其中有一枚假币,且假币的质量比真币的要小,求假币的位置?
#include<stdio.h>
#include<conio.h>
#define N 10
int FindCorn(int l[],int low,int high)
{
int sum1,sum2,i,j=0;
int length=high-low+1;
if(length%2==0)
{
length=length/2;
for(i=low,j=low+length;(i<=low+length-1)&&(j<=high);i++,j++)
{
sum1=sum1+l[i];
sum2=sum2+l[j];
}
if(sum1>sum2){FindCorn(l,low+length,high);}
else {FindCorn(l,low,low+length-1);}
}
else
{
length=length/2;
for(i=low,j=low+length+1;(i<=low+length-1)&&(j<=high);i++,j++)
{
sum1=sum1+l[i];
sum2=sum2+l[j];
}
if(sum1==sum2) return low+length;
if(sum1>sum2) {FindCorn(l,low+length+1,high);}
else{FindCorn(l,low,low+length-1);}
}
}
void main()
{
int i;
int corn
= { 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 };
i=FindCorn(corn, 0, N-1);
printf("假币的位置是%d",i+1);
getch();
}
相关文章推荐
- 第二数学归纳法:硬币问题和堆垛游戏
- 洛谷 P2964 [USACO09NOV] 硬币的游戏A Coin Game
- 硬币游戏
- 硬币游戏
- JZOJ1322. 硬币游戏
- bzoj 4820: [Sdoi2017]硬币游戏 概率dp+高斯消元+KMP
- 拿硬币游戏
- 51Nod 1381 硬币游戏 | 概率(数学期望)
- bzoj4600 [Sdoi2016]硬币游戏 sg函数+结论
- [Sdoi 2017] bzoj4820 硬币游戏 [概率+高斯消元+哈希]
- 博弈-翻硬币游戏
- [KMP 高斯消元] BZOJ 4820: [Sdoi2017]硬币游戏
- Introduction to Java Programming编程题7.11<硬币游戏:显示正反面>
- 硬币游戏IV
- 1411: [ZJOI2009]硬币游戏【xjb找规律
- [luogu2964][USACO09NOV][硬币的游戏A Coin Game] (博弈+动态规划)
- 猴子搬桃和硬币游戏
- BZOJ_2017_[Usaco2009 Nov]硬币游戏_博弈论+DP
- 51nod 1381 硬币游戏
- bzoj 1411 [ZJOI2009]硬币游戏