歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C++經典問題:狐狸找兔子

問題描述:

圍繞著山頂有10個洞,一只狐狸和一只兔子住在各自的洞裡。狐狸想吃掉兔子。一天,兔子對狐狸說:“你想吃我有一個條件,先把洞從1-10編上號,你從10號洞出發,先到1號洞找我;第二次隔1個洞找我,第三次隔2個洞找我,以後依次類推,次數不限,若能找到我,你就可以飽餐一頓。不過在沒有找到我以前不能停下來。”狐狸滿口答應,就開始找了。它從早到晚進了1000次洞,累得昏了過去,也沒找到兔子,請問,兔子躲在幾號洞裡?

分析:

我們設定一個數組a[11],用來表示這10個山洞(a[0]不使用),並且初始化為0(數組元素值為0表示該洞穴狐狸沒有進入過),然後用多次循環模擬狐狸找兔子的過程,狐狸找兔子的循環肯定是有一個有限循環,我們不妨設置為1000,因為狐狸找了1000次還找不到兔子的話,早就累死了=.=

然後,這10個山洞是圍成了一個圈的,所以是在循環訪問數組中的內容,用除n取余來限制。

程序代碼

#include<iostream>
using namespace std;
int main(){
    int a[11]={0};
    int i=0,k=0;
    int n=10;
    for(i=1;i<=1000;i++){    //設定循環的次數,也就是狐狸找兔子的次數
        k=(k+i)%n;     //因為洞穴圍成了一個圈
        if(k==0)k=n;     //當k為0的時候,說明可以整除
        a[k]=1;      //將數組值設置為1,表示這個洞狐狸已經進入過了
    }                                       
    for(i=1;i<=n;i++){
        if(a[i]!=1){
            cout<<"\n洞穴"<<i<<"安全"<<endl;
      }
    }
 cout<<endl;
    return 0;
}

運行界面:

 

 

Copyright © Linux教程網 All Rights Reserved