C语言 · 未名湖边的烦恼
生活随笔
收集整理的這篇文章主要介紹了
C语言 · 未名湖边的烦恼
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
問(wèn)題描述 每年冬天,北大未名湖上都是滑冰的好地方。北大體育組準(zhǔn)備了許多冰鞋,可是人太多了,每天下午收工后,常常一雙冰鞋都不剩。
每天早上,租鞋窗口都會(huì)排起長(zhǎng)龍,假設(shè)有還鞋的m個(gè),有需要租鞋的n個(gè)。現(xiàn)在的問(wèn)題是,這些人有多少種排法,可以避免出現(xiàn)體育組沒(méi)有冰鞋可租的尷尬場(chǎng)面。(兩個(gè)同樣需求的人(比如都是租鞋或都是還鞋)交換位置是同一種排法) 輸入格式 兩個(gè)整數(shù),表示m和n 輸出格式 一個(gè)整數(shù),表示隊(duì)伍的排法的方案數(shù)。 樣例輸入 3 2 樣例輸出 5 數(shù)據(jù)規(guī)模和約定 m,n∈[0,18]
#include<stdio.h>
int paidui(int m,int n);
int main()
{
?int m,n,k;
?scanf("%d%d",&m,&n);
?k=paidui(m,n);
?printf("%d",k);
?return 0;
}
int paidui(int m,int n)//遞歸
{
?if(m<n) return 0;//出口1:借者多于還者,0種方案
?if(n==0) return 1;//出口2:借者為0人,1種方案
?return paidui(m-1,n)+paidui(m,n-1);
?/* 從m+n個(gè)人中出1個(gè)人站到隊(duì)列中,
?用遞歸法求剩余m+n-1個(gè)人有多少種排法。
?若站到隊(duì)列中的是還者,則剩余人數(shù)有f(m-1,n)種排法。
?若站到隊(duì)列中的是借者,則剩余人數(shù)有f(m,n-1)種排法。
?所以m+n個(gè)人的排法是上述兩個(gè)排法之和。
*/
}
每天早上,租鞋窗口都會(huì)排起長(zhǎng)龍,假設(shè)有還鞋的m個(gè),有需要租鞋的n個(gè)。現(xiàn)在的問(wèn)題是,這些人有多少種排法,可以避免出現(xiàn)體育組沒(méi)有冰鞋可租的尷尬場(chǎng)面。(兩個(gè)同樣需求的人(比如都是租鞋或都是還鞋)交換位置是同一種排法) 輸入格式 兩個(gè)整數(shù),表示m和n 輸出格式 一個(gè)整數(shù),表示隊(duì)伍的排法的方案數(shù)。 樣例輸入 3 2 樣例輸出 5 數(shù)據(jù)規(guī)模和約定 m,n∈[0,18]
#include<stdio.h>
int paidui(int m,int n);
int main()
{
?int m,n,k;
?scanf("%d%d",&m,&n);
?k=paidui(m,n);
?printf("%d",k);
?return 0;
}
int paidui(int m,int n)//遞歸
{
?if(m<n) return 0;//出口1:借者多于還者,0種方案
?if(n==0) return 1;//出口2:借者為0人,1種方案
?return paidui(m-1,n)+paidui(m,n-1);
?/* 從m+n個(gè)人中出1個(gè)人站到隊(duì)列中,
?用遞歸法求剩余m+n-1個(gè)人有多少種排法。
?若站到隊(duì)列中的是還者,則剩余人數(shù)有f(m-1,n)種排法。
?若站到隊(duì)列中的是借者,則剩余人數(shù)有f(m,n-1)種排法。
?所以m+n個(gè)人的排法是上述兩個(gè)排法之和。
*/
}
轉(zhuǎn)載于:https://www.cnblogs.com/panweiwei/p/6218761.html
總結(jié)
以上是生活随笔為你收集整理的C语言 · 未名湖边的烦恼的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: javascript遍历循环的3种方法
- 下一篇: 使用EF Oracle实现DevExpr