n个骰子可能的点数和
让后面的点数比前面的大
package touzi;
public class Touzi {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum = 0;
int detph = 10;
int [] data = new int[detph];
//fun1(1, detph, sum, data);
for(int i=1; i<=6; i++){
data[detph-1] = i;
fun1(i, detph, sum, data);
}
/**/
}
/*
* 只能求出点数和的可能
*/
public static void fun1(int k, int detph,int sum,int[] data){
sum+=k;
--detph;
if(detph<=0){
System.out.print(sum+"#");
for(int i=0; i<data.length; i++){
System.out.print(data[i]+" ");
}
System.out.println();
return;
}
for(int i=k; i<=6; i++){
data[detph-1] = i;
fun1(i, detph, sum, data);
}
}
}
<pre name="code" class="java">package touzi; import java.util.HashMap;
import java.util.Map; /**
* n个骰子可能的点数和
* @author root
*
*/
public class Touzi2 { public static void main(String[] args) {
// TODO Auto-generated method stub
fun1(2);
} public static void fun1(int n){
//m次点数和
int[] data1 = new int[6*n+1];
//m-1次点数和
int[] data2 = new int[6*n+1];
//每次投一个骰子
for(int i=1; i<=n; i++){
//j为当前骰子点数
//将data1复制到data2
for(int j=0; j<6*n+1; j++){
if(data1[j]!=0){
data2[j]=data1[j];
}else{
data2[j]=0;
}
}
for(int j=1; j<=6; j++){
//k为数组下标,其值为当前数字出现次数
for(int k=1; k<6*i+1; k++){
int t = j+k;
if(data2[k]!=0 && t<6*n+1){
data1[t]++;
}else if(data2[k]==0){
data1[k]=1;
}
}
}
//data1减去data2中存在的一次
for(int j=0; j<6*n+1; j++){
if(data2[j]!=0){
data1[j]-=1;
}
}
}
for(int i=0; i<6*n+1; i++){
if(data1[i]!=0){
System.out.println(i+"="+data1[i]+" ");
}
}
}
}
n个骰子可能的点数和的更多相关文章
- 【编程题目】n 个骰子的点数
67.俩个闲玩娱乐(运算).2.n 个骰子的点数.把 n 个骰子扔在地上,所有骰子朝上一面的点数之和为 S.输入 n,打印出 S 的所有可能的值出现的概率. 思路:用递归把每个骰子的可能情况变量,记录 ...
- 【面试题043】n个骰子的点数
[面试题043]n个骰子的点数 题目: 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s, 输入n,打印出s的所有可能的值出现的概率. n个骰子的总点数,最小为n,最大为6n,根据排列组 ...
- N个骰子的点数和的概率分布
程序设计思路: 假设有n个骰子,关键是需要统计每个点数出现的次数.首先分析第一个骰子点数和有1到6的点数,计算出1到6的每种点数 的次数,并将结果用一个数组pos1记录.然后分析有两个骰子时, 点数为 ...
- 【Java】 剑指offer(60) n个骰子的点数
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s.输入n,打 ...
- 《剑指offer》 面试题43 n个骰子的点数 (java)
引言:写这篇文章的初衷只是想做个笔记,因为这道题代码量有点大,有点抽象,而书上并没有详细的注释.为了加深印象和便于下次复习,做个记录. 原题:把n个骰子扔到地上,所有骰子朝上一面的点数之后为s. 输入 ...
- 43:n个骰子的点数
算法分析: 算法1.基于递归求色子点数,时间效率不高 现在我们考虑如何统计每一个点数出现的次数.要向求出n个骰子的点数和,可以先把n个骰子分为两堆:第一堆只有一个,另一个有n-1个.单独的那一个有可能 ...
- (剑指Offer)面试题43:n个骰子的点数
题目: 把n个骰子仍在地上,所有骰子朝上一面的点数之和为s.输入n,打印出s的所有可能的值出现的概率. 思路: s可能出现的值的范围为:n--6*n 1.全排列 回溯法枚举n个骰子(6面)的全排列,然 ...
- 骰子点数概率__dp
骰子点数概率 时间限制:1 秒 内存限制:32 兆 题目描述: 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S.输入n,打印出S的所有可能的值出现的概率. 输入: 输入包括一个整数N(1<= ...
- 剑指Offer面试题43(Java版):n个骰子的点数
题目:把n个骰子仍在地上.全部骰子朝上一面的点数之和为s,输入n,打印出s的全部可能的值出现的概率. 解法一:基于递归求骰子的点数,时间效率不够高 如今我们考虑怎样统计每个点数出现的次数. 要向求出n ...
随机推荐
- Flink 1.0到1.9特性
Flink API 历史变迁 在 Flink 1.0.0 时期,加入了 State API,即 ValueState.ReducingState.ListState 等等.State API 可以认为 ...
- Java面向对象(一)
面向对象(Object Oriented) 面向过程:事物比较简单.将问题分解为若干个步骤.按照步骤依次执行.面向对象:事物比较复杂.在解决面向对象的过程中,最后的执行部分还是面向过程方式,面向过程和 ...
- 2019-2020-1 20199319《Linux内核原理与分析》第一周作业
一.Linux系统简介 通过实验一了解了Linux 的历史,Linux与windows之间的区别以及学习Linux的方法.因为一直用的都是windows系统,习惯了图形界面,而Linux是通过输入命令 ...
- BaseAdapter的使用与优化
1.逗比式 //逗比式............................................ //加载布局文件 //将xml文件转化为view,获取到view//由于我们只需要将XM ...
- C++——INI文件详解
原创声明:本文系博主原创文章,转载及引用请注明出处. 1. INI文件介绍 INI是英文单词 INItialization 的缩写,常作为Windows系统下的配置文件.INI文件是文本文件,通常用于 ...
- GitChat·人工智能 | 除了深度学习,机器翻译还需要啥?
本文开始要写作的时候,翻译圈里出了一个“爆炸性”的事件.6月27日下午,一个同传译员在朋友圈里爆料:某AI公司请这位译员去“扮演”机器同传,制造人工智能取代人工同传的“震撼”效果. 这个事件瞬间在译员 ...
- mybatis总体分析
Mybatis是一个半orp框架,说是半,也就是不完全是,还有很多地方是需要开发人员完成的.发现很多互联网公司使用Mybatis,而不是hibernate.应该是因为Mybatis不但有orp的优势, ...
- UVa400 Unix is
The computer company you work for is introducing a brand new computer line and is developing a new U ...
- Ubuntu下python开发环境搭建
配置语言 1) 依次点击设置--Region & Language--Manage Installed Languages --install/remove language--chinese ...
- Python之signal模块的使用
常用的信号值如下: 信号值 事件 处理方式 SIGHUP 终止进程 终端线路挂断 SIGINT 终止进程 中断进程 SIGQUIT "建立CORE文件终止进程,并且生成core文件" ...