1.撲克牌的順子
從撲克牌中隨機抽5張牌,判斷是不是乙個順子,即這5張牌是不是連續的。
2-10為數字本身,a為1,j為11,q為12,k為13,而大小王可以看成任意數字。
2.n個骰子的點數。
把n個骰子扔在地上,所有骰子朝上一面的點數之和為s。輸入n,
列印出s的所有可能的值出現的概率。
1:思路:先把輸入轉換成數字儲存起來,其中大小王存為0,然後排序,統計0的個數,以及數字之間間隔的距離,2和3間距為0,若總的間距小於等於0的個數,則可以組成順子,否則不能,注意計算間距的時候,若前後兩個數字一樣,即原來牌裡面有對子(王除外),顯然不是順子
bool iscontinus(vectorinput)
sort(number.begin(),number.end());
int count_zero = 0;
int count_gap = 0;
vector::iterator iter2 =number.begin();
for (;iter2!=number.end() && *iter2==0;iter2++)
count_zero++;
iter2++;
for (;iter2!=number.end();iter2++)
if(count_gap<=count_zero)
return true;
else
return false;
}
2.參考
s所有可能的值n——6n
f(k, n) 表示k個骰子點數和為n的種數,k表示骰子個數,n表示k個骰子的點數和
f(k-1, n-6) + f(k-1, n-5) + f(k-1, n-4) + f(k-1, n-3) + f(k-1, n-2) + f(k-1, n-1) 對於 k > 0, k <= n <= 6*k
/
f(k, n) =
\ 0
對於 n < k or n > 6*k
當k=1時, f(1,1)=f(1,2)=f(1,3)=f(1,4)=f(1,5)=f(1,6)=1。
從上面公式可以看出,k個骰子點數和為n的種數只與k-1個骰子的和有關。這就可以用到備忘錄的方法,用一張**儲存已解決的子問題的解,然後自底向上填表。考慮到當前層的計算只與下一層有關,因此只需儲存一行。
const int face_num = 6; //骰子的面數
//函式功能 : n個骰子的點數
//函式引數 : number為骰子數
//返回值 : 無
void printsumprobabilityofdices(int number)
} //不可能的情況,即i個骰子的和不可能小於i
for(j = i - 1;j >= 0; j--)
psum[j] = 0;
} //列印結果
for(i = 0; i <= size; i++)
cout<<"sum = "<
刷題 撲克牌順子
ll今天心情特別好,因為他去買了一副撲克牌,發現裡面居然有2個大王,2個小王 一副牌原本是54張 他隨機從中抽出了5張牌,想測測自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿!紅心a,黑桃3,小王,大王,方片5 oh my god 不是順子 ll不高興了,他想了想,決定大 小...
OJ題 撲克牌順子
題目描述 ll今天心情特別好,因為他去買了一副撲克牌,發現裡面居然有2個大王,2個小王 一副牌原本是54張 他隨機從中抽出了5張牌,想測測自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿!紅心a,黑桃3,小王,大王,方片5 oh my god 不是順子 ll不高興了,他想了想,...
撲克牌順子
ll今天心情特別好,因為他去買了一副撲克牌,發現裡面居然有2個大王,2個小王 一副牌原本是54張 他隨機從中抽出了5張牌,想測測自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿!紅心a,黑桃3,小王,大王,方片5 oh my god 不是順子.ll不高興了,他想了想,決定大 小...