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 ...
随机推荐
- C# 获取当前执行DLL 所在路径
有的时候,当前执行的DLL 和启动的EXE 所在路径并不一致,这时我们想要获得当前执行DLL 所在路径可以使用下面的方法. // Summary: // Gets the path or UNC lo ...
- ASP.NET实现验证码图片
新建一个checkcode.aspx文件,页面中不用写任何东西,在代码中,Page_Load中写入如下代码: string chkCode = string.Empty; int ix, ...
- java_day09_GUI事件
第九章:GUI事件 1.AWT事件模型概述 使用AWT或者Swing中的容器.组件和布局管理器就可以构建出图形界面,但是这时候该界面还并不能和用户进行交换,因为图形界面中的组件还没有添加事件监听器,所 ...
- 第十章· MySQL的主从复制
一.主从复制简介  2015年5月28日11时,12小时后恢复,损失:平均每小时106.48W$ 1)高可用 2)辅助备份 3)分担负载 复制是 MySQL 的一项功能,允许服务器将更改从一个实例复 ...
- Activity的跳转及返回值,activity的生命周期
Activity生命周期 从创建到销毁的生命周期: onCreate()→onStart()→onResume()→onPouse()→onStop()→onDestroy() 从起动到后台再到前台: ...
- 版本控制工具 svn 二
一.图标 忽略图标 实例 二.版本 回滚 tortoisesvn ——> 版本更新——>一般情况下使用 “显示日子” 回滚 三.版本冲突 版本冲突产生原因 多人先后提交文件,每个人提交的文 ...
- 用cubase制作消音伴奏
- QTP(11)
练习:录制Flight登录-打开1-10之间随机编号的订单-退出,打开完订单后,退出前,使用msgbox输出“顾客x预定了y从z到w的c类型的k张票!”说明:x是顾客姓名.y是日期.z是FlyFrom ...
- springboot整合jetty(转)
jdk1.8 springboot替换容器在网上搜索只需要两步如果不是可能就会报错Unable to start EmbeddedWebApplicationContext due to missin ...
- jmeter+jenkins+git+ant
摘自:https://www.cnblogs.com/syw20170419/p/10732167.html 使用场景: 多人协作,共同完成脚本的编写,脚本之间进行合并后,用远程构建运行脚本.做接口的 ...