不一樣放牌遊戲

2021-10-25 04:40:02 字數 2780 閱讀 2173

題目1(整數拆分)

將乙個正整數n分解成幾個正整數相加,可以有多種分解方法,

例如7=6+1,7=5+2,7=5+1+1,...程式設計求出正整數n的所有整數分解式子。

輸入格式:

每個輸入包含乙個測試用例,即正整數n (0**1:(n如果過百就可能超時)

#include "stdio.h"

int n,sum,ans;

int a[100];

void dfs(int step,int x)

return;

} else if(sum>n)

return;

for(i=x;i<=n;i++)//每次放的數都必須》=上一次的數

return;

}int main()

return 0;

}

題目2:(相對題目1增添了條件)

將整數n分成k份,且每份不能為空,問有多少種不同的分法。

當n=7,k=3時,下面三種分法被認為是相同的:

(1,1,5),(1,5,1),(5,1,1)

輸入描述:

一行兩個數n,m。(6<=n<=200,2<=m<=6)

輸出描述:

一行乙個整數,即不同的分法數。

當然如果用動態規劃來寫,更節約時間

/*

將整數n分成k份,相當於我手上有著許多張(1-n)的牌

我需要取任意三張牌分別放到三個盒子裡面,且需要避免重複

*/#includeint a[10];//用來放置拆分後的數字

int n,m,ans,sum;

void dfs(int step,int x)

int i;

for(i=x;i<=(n-sum)/(m-step+1);i++)//牌按著從小到大排序,這樣可有效的避免重複

return ;

}int main()

題目3:(相對題目2又增添了條件)

把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,

問共有多少種不同的分法?(用k表示)

5,1,1和1,5,1 是同一種分法。

input

第一行是測試資料的數目t(0 <= t <= 20)。

以下每行均包含二個整數m和n,以空格分開。1<=m,n<=10。

output

對輸入的每組資料m和n,用一行輸出相應的k。

sample input

17 3

sample output

8

**3(n也不能太大):(可以用的動態規劃來寫,省時)

蘋果數是乙個整數,拆分放到盤子裡面

相當於整數拆分,只是這裡可以有空盤子

#includeint a[10];//用來放置拆分後的數字

int n,m,ans,sum;

void dfs(int step,int x)

if(step==m+1)//沒有(m+1)個盤子,因此不可能放蘋果

return;

int i; //這裡必須是n,因為沒有辦法判定會放到多少個盤子裡

for(i=x;i<=n;i++)//牌按著從小到大排序,這樣可有效的避免重複

return ;

}int main()

return 0;

}

題目4:(放牌,相比全排列難了一些)

題目描述

小明被劫持到x賭城,被迫與其他3人玩牌。

一副撲克牌(去掉大小王牌,共52張),均勻發給4個人,每個人13張。

這時,小明腦子裡突然冒出乙個問題:

如果不考慮花色,只考慮點數,也不考慮自己得到的牌的先後順序

自己手裡能拿到的初始牌型組合一共有多少種呢?

輸出請輸出該整數,不要輸出任何多餘的內容或說明文字。

**4:

/*

分析:方法1:深搜

題上說了,不考慮花色,那麼題意就變為:13種牌,每種牌各有4張一樣的

題上又說,不考慮取牌的順序,那麼我們就沒有必要一張一張的取牌了,

我們可以一次拿多 張,也不可以不拿,可以多拿幾次,也可以少拿幾次

這裡為了我們取牌方便,我們把同一種類的放在一塊,那麼就變成了13堆,

當我們站在不同的堆面前,我們可以拿0或1或2或3或4張,然後繼續去下一堆拿牌

當我們恰好拿夠13張時,我們就可以ans+1了,之後返回,

然後再把我們最後一次拿的牌放回去,看看是否可以繼續選擇別的種類的牌,

這樣的話,其實就是深搜返回的過程了

方法2:暴力

還可以13層for迴圈(i=0;i<=4;i++)

滿足條件i+j+k+l+m+l+n+o+p+q+r+s+t==13

*/#includeint ans;

void dfs(int step,int sum)

dfs(step+1,sum);//去下一堆

sum-=i;//把i張牌再放回去,選擇再去拿i+1張牌

} return;

}int main()

放蘋果(盤子不一樣)

view submit statistics clarify 總time limit 1000ms memory limit 65535kb description 把m個同樣的蘋果放在n個不同樣的盤子裡,允許有的盤子空著不放,問共有多少種放法?5,1,1和1,5,1是不同的放法。比如輸入2 2,那...

不一樣又不一樣的 木板接水

空地上豎立著n個從左到右排列的木板,它們可以把水擋住,但溢位最邊上木板的水將會流到空地上。已知木板間距都是單位1,現給定每個木板的高度,請求出總共能接住的水量?說明一點,這裡只考慮間距 寬度 和高度,不考慮第三個維度,因此水量是平方單位。木板高度分別是2,1,3,那麼我們可以接住2 2 4平方單位的...

我們不一樣

前輩們因自身實際的種種因素的影響而產生的認知,並不一定適用於我們自身。你可能從來不會去想乙個問題 你的觀點,來自 其實,它們絕大部分來自網路,它們或多或少地蠶食了你的判斷力。未來的路要怎麼走,沒有對與錯。有的,只是每乙個選擇所需要承擔的責任。我不想面臨,後之視今亦猶今之視昔的悲哀。我希望,未來回首,...