多個色子中點數之和出現的次數以及最大值

投多個色子,求色子點數和出現最多的是多少次。

/**
*  投色子,使用遞歸
*/
#include<stdio.h>
#include <vector>
using namespace std;
int n;              			 //n個色子
int time[100];     				 //點數出現的次數
void tou(int ith, int cnt){      //投第ith個色子,上幾個色子投的和是多少
    if(ith > n){    			 //最後一個色子統計出現的次數
        time[cnt]++;
        return ;
    }
    for(int i = 1; i <= 6; i++){
        tou(ith + 1, cnt + i);
    }
}

int main(){
    printf("請輸入色子的個數1-12:");
    scanf("%d", &n);
    tou(1, 0);
    //打印每個點數和出現的次數
    for(int i = n; i <= n * 6; i++){
        printf("%d: %d\n",i, time[i]);
    }
    //統計色子中點數和的最大值
    int maxn = 0;
    for(int i = n; i <= n * 6; i++){
        maxn = max(maxn, time[i]);
    }
    vector<int>ans;
    for(int i = n; i <= n * 6; i++){
        if(maxn == time[i])
        	ans.push_back(i);
    }
    //打印哪個點出現的次數最多
    printf("答案爲:\n");
    for(int i = 0; i < ans.size(); i++){
        printf("%d ", ans[i]);
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章