猴子选大王c语言课程设计,【C/C++】猴子选大王
這些題目都是大一剛?cè)雽W時學習C語言的課后作業(yè),在OJ上看到還保留著,就都整理下發(fā)出來吧......(只有題和代碼)
【問題描述】要從n只猴子中選出一位大王。它們決定使用下面的方法:
n只猴子圍成一圈,從1到n順序編號。從第q只猴子開始,從1到m報數(shù),凡報到m的猴子退出競選,下一次又從退出的那只猴子的下一只開始從1到m報數(shù),直至剩下的最后一只為大王。請問最后哪只猴子被選為大王。
【輸入形式】控制臺輸入三個整數(shù)n,m,q。
【輸出形式】輸出最后選為大王的猴子編號。
【樣例輸入】
7 4 3
【樣例輸出】
4
【樣例說明】輸入整數(shù)n = 7,m = 4,n = 3,輸出4
【評分標準】本題要求輸出最后被選為大王的猴子編號,完全正確得20分,每個測試點4分。上傳C語言文件名為monkey.c。
【代碼】
還記得,這道題折磨我到凌晨不知道幾點...當時的邏輯似乎就是繞不過來,但是想通后就覺得很簡單了。我已經(jīng)有寫過約瑟夫問題,感興趣的主頁搜索即可。
下面是代碼:
#include //選個鬼哦,頭疼
int a[5201314];
int main()
{
int c_k(int n,int m,int q);
int n,m,q;
scanf("%d %d %d",&n,&m,&q);
printf("%d",c_k(n,m,q));
return 0;
}
int c_k(int n,int m,int q)
{
int i;
int sum=0;//累加數(shù)sum
int count=n; //兒子個數(shù)賦初值
for(i=0;i
i=q-1;//從第q個猴子開始數(shù)
while(i<=n)
{
if(i==n)i=0;//哈哈哈哈哈哈哈哈哈哈哈哈,看不懂吧
sum+=a[i];
if(sum==m)
{
sum=a[i]=0;//淘汰(給該數(shù)組元素賦值,相當于帶上標記
count-=1;
if (count==1) break;
}
i++;
}
for(i=0;i
if(a[i]!=0)break;//找到就跳出來
return (i+1);//返回
}
原先代碼有些注釋實在不雅。。我就刪除了。
PS:由于當時剛學C語言,很多代碼顯得很稚嫩...需要的人見諒...
總結(jié)
以上是生活随笔為你收集整理的猴子选大王c语言课程设计,【C/C++】猴子选大王的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言编程回文数用数组,【C语言程序设计
- 下一篇: 2017年9月分c语言,2020年9月中