例题1:找伪币
给出N个一模一样的硬币,从1开始编号,其中有一个是伪造的,且那个伪造的币比真币要轻,请问如何找出伪造的币,并输出序号?
测试数据:
输入:
16
1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1
输出:
7
输入:
17
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
输出:
17
输入:
18
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1
输出:
17
方法一、穷举法:
两两比较,找出最轻的,最多比较n/2次能判断出来
//二分法,三分法—分治—递推(开始往后)
//递归有出口,f(1)=1,f(2)=1,f(n)=f(n-1)+f(n-2)
//穷举法
#include<cstdio>
#include<iostream>
using namespace std;
int a[1000];
int main(void)
{
freopen("CON","r",stdin);
freopen("CON","w",stdout);
int n;
cin>>n;
//获取下标
for(int i=1;i<=n;i++){
cin>>a[i];