分而治之-找金幣

來源:互聯網
上載者:User
#include<stdio.h> int findCoin(int coin[],int front,int back){     int i,sumf=0,sumb=0,sum=0;     if(front+1==back)     {         if(coin[front]<coin[back])    return front+1;         else return back+1;                      }        if((back-front+1)%2==0)     {         for(i=front;i<=front+(back-front)/2;i++)             sumf=sumf+coin[i];         for(i=front+(back-front)/2+1;i<=back;i++)             sumb=sumb+coin[i];         if(sumf<sumb)             return findCoin(coin,front,front+(back-front)/2);         if(sumf>sumb)             return findCoin(coin,front+(back-front)/2+1,back);                            }          if((back-front+1)%2!=0)     {         for(i=front;i<=front+(back-front)/2-1;i++)             sumf=sumf+coin[i];         for(i=front+(back-front)/2+1;i<=back;i++)             sumb=sumb+coin[i];             sum=coin[front+(back-front)/2];         if(sumf<sumb)             return findCoin(coin,front,front+(back-front)/2-1);         if(sumf>sumb)             return findCoin(coin,front+(back-front)/2+1,back);          if(sumf+sum==sumb+sum)             return front+(back-front)/2+1;                            }}    int main(){    int coin[30]={1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};    printf("那個假幣是第%d個金幣!\n",findCoin(coin,0,29));    system("PAUSE");    return 0;}
1.如果金幣有偶數個,把金幣的前半部分與後部分的重量進行比較,假金幣在較小的那部分。2.如果金幣有奇數個,以正中間的那個金幣作為軸,將金幣分為前後兩個部分,如果這兩部分相當,說明這個為軸的金幣就是假金幣,如果不相當,假金幣就在品質較小的那部分。3.迴圈上述過程直到找到假金幣。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.