面接問題60:n個のサイコロの点数
2068 ワード
タイトルの説明 n個のサイコロを地面に投げ、すべてのサイコロが上を向いている点数の和はs である. nを入力、sのすべての可能な値が現れる確率 を印刷する.
タイトル解読剣指Offer 294 コードC++構想一、再帰実現 構想二、循環実現
展望をまとめる
タイトル解読
#include
#include
#include
using namespace std;
class Solution {
public:
void getprobability(int n){
vector result(6*n - n +1, 0);
for(int i=1; i <= 6; i++){
probability(n, n, i, result);
}
int total = pow(6, n);
for(int i=0; i < result.size(); i++){
cout<& result){
if(current == 1){
result[sum - n]++;
}
else{
for(int i=1; i <= 6; i++){
probability(n, current-1, sum+i, result);
}
}
}
};
int main(){
Solution ss;
int n = 6; // n
ss.getprobability(n);
}
#include
#include
#include
using namespace std;
class Solution {
public:
void getprobability(int n){
int number = 6;
int temp[2][number*n + 1];
int flag = 0;
for(int i=0; i< number*n+1; i++){
temp[0][i] = 0;
temp[1][i] = 0;
}
for(int i=1; i <= number; i++){
temp[flag][i] = 1;
}
for(int k=2; k <= n; k++){
for(int i=0; i < k; i++){
temp[1-flag][i] = 0;
}
for(int i=k; i <= number*k; i++){
temp[1-flag][i] = 0;
for(int j=1; j<=i && j<=number; j++){
temp[1-flag][i] += temp[flag][i-j];
}
}
flag = 1 - flag;
}
int total = pow(6, n);
for(int i=n; i <= n*number; i++){
cout<
展望をまとめる