◆◆关于算法（急）◆◆

1. 色子(6个面),N个色子,把所有组合输出来,去掉重复的(如:3个色子: 1,2,3的组合 和 3,2,1的组合 或者 2,3,1 的组合 都示为重复的 )
2. 画TABLE,所有单元格相临的颜色都不能有重复的.

------重点希望有朋友可以解答第1题. 因为我只做了第1题. 5小时.还没做出来.-------

13个回答

public class DiceArith {

``````/**
* 数组转字符
*
* @return
*/
public static String arraysToString(String[] s) {
String t = "";
for (int i = 0; i < s.length; i++)
t += s[i];
return t;
}

/**
* 方法一
*
* @param N
*/
public static void method1(int N) {
TreeSet<String> tree = new TreeSet<String>();
long start = 1, end = 6;
for (int i = 1; i < N; i++) {
start += 1 * convert(10, i);
end += 6 * convert(10, i);
}
String[] data;
for (long j = start; j <= end; j++) {
if (expValid(j + "")) {
data = String.valueOf(j).split("");
Arrays.sort(data);
}
}

for (Iterator<String> t = tree.iterator(); t.hasNext();) {
String d = t.next();
System.out.println(d);
}
}

public static void main(String[] args) {
method1(3);
}

/**
* 计算平方根
*
* @param data
* @param n
* @return
*/
public static long convert(int data, int n) {
long result = 1l;
for (int i = 1; i <= n; i++)
result *= data;
return result;
}

/**
* 正则验证色子数在【1-6】范围内
*
* @param s
* @return
*/
public static boolean expValid(String s) {
Pattern p4 = Pattern.compile("^[1-6]+\$");
Matcher m4 = p4.matcher(s + "");
if (m4.find())
return true;
else
return false;
}
``````

}

N 个色子, 每个取值 1~6, 要求没有重复的组合, 则组合为这样的
11111111111...1 (N 个 1),
12345612345...6 (N 个数),
...

[quote]能不能给出具体的代码。关于理论的想法我也想过很多。

int start = 1, end = 6;
for (int i = 1; i < N; i++) {
start += 1* 10 * i;
end += 6*10*i;
}
for (int i = start; i <=end; i++)
System.out.println(i);

public class DiceArith {

``````public static long convert(int data, int n) {
long result = 1l;
for (int i = 1; i <= n; i++)
result *= data;
return result;
}

public static void main(String[] args) {
long start = 1, end = 6;
long N = 4;
for (int i = 1; i < N; i++) {
start += 1 * convert(10, i);
end += 6 * convert(10, i);
}
for (long j = start; j <= end; j++)
System.out.println(j);
}
``````

}

[quote]for (int i = start; i <=end; i++)
System.out.println(i);[/quote]

17..27..37..47..57.了吗，请问色子有7吗？

[code="java"]for (int i = start; i <=end; i++) {
Pattern p4=Pattern.compile("[1-6]+");
Matcher m4=p4.matcher(i+"");
if(m4)
System.out.println(i);
}[/code]

for (int i = start; i <=end; i++) {
if (i.toString().indexOf(55) != -1 || i.toString().indexOf(56) != -1 || i.toString().indexOf(57) != -1 || i.toString().indexOf(48) != -1)
continue;

System.out.println(i);
}

[quote]但我觉得你们这样做循环，效率都不高，我觉得让一个组合作成六进制的数，只要加到6就进1，那样会省去很多多余的组合。估计效率会高点[/quote]

public class DiceArith {

``````/**
* 数组转字符
*
* @return
*/
public static String arraysToString(String[] s) {
String t = "";
for (int i = 0; i < s.length; i++)
t += s[i];
return t;
}

/**
* 方法一
*
* @param N
*/
public static void method1(int N) {
String data = "", temp = "";
TreeSet<String> tree = new TreeSet<String>();
for (int i = 1; i <= N; i++) {
for (int k = 1; k <= 6; k++) {
data = i + "" + k;
String[] arr = data.split("");
Arrays.sort(arr);
temp = arraysToString(arr);
}
}

for (Iterator<String> t = tree.iterator(); t.hasNext();) {
String d = t.next();
System.out.println(d);
}
}

public static void main(String[] args) {
method1(4);
}
``````

}

Java 13 来袭，最新最全新特性解读
2017年8月，JCP执行委员会提出将Java的发布频率改为每六个月一次，新的发布周期严格遵循时间点，将在每年的3月份和9月份发布。 目前，JDK官网上已经可以看到JDK 13的进展，最新版的JDK 13将于2019年9月17日发布。 ![][1] 目前，JDK13处于Release-Candidate Phase（发布候选阶段），将于9月17日正式发布。目前该版本包含的特性已经全部固定，主要包含...

MiniGui、TinyOS相继开源中，国产loT操作系统大阅兵

“不给钱就删库”的勒索病毒， 程序员该如何防护？

100 个网络基础知识普及，看完成半个网络高手

Docker 零基础从入门到使用

9月28日科技资讯|华为发布全容器化 5G 核心网；余承东评小米 MIX Aphla 手机无实用价值；PHP 新版本更新
「CSDN 极客头条」，是从 CSDN 网站延伸至官方微信公众号的特别栏目，专注于一天业界事报道。风里雨里，我们将每天为朋友们，播报最新鲜有料的新闻资讯，让所有技术人，时刻紧跟业界潮流。 整理 | 胡巍巍 责编 | 屠敏 快讯速知 卢伟冰回怼余承东：MIX Aphla没实用价值？ 百度高级副总裁沈抖将担任爱奇艺董事，王路辞任 山西将对5G基站进行电价补贴 支付宝小程序上线“品牌认证”与“品...

[网络安全自学篇] 十四.Python攻防之基础常识、正则表达式、Web编程和套接字通信（一）

C语言实现推箱子游戏

JVM：图文详解Java虚拟机的内存结构

Java 的每个基本类型都对应了一个包装类型，比如说 int 的包装类型为 Integer，double 的包装类型为 Double。基本类型和包装类型的区别主要有以下 4 点。
2019云栖大会高能看点之：程序员吐槽大会

python学习之路 - 从入门到精通到大师 文章目录[python学习之路 - 从入门到精通到大师](https://blog.csdn.net/TeFuirnever/article/details/90017382)1.7.回顾Python基础1.8.数据入门1.8.1.内置的原子数据类型1.8.2.内置的集合数据类型 1.7.回顾Python基础 在本节中，我们将回顾 Python 编程语...

【前言】 在如今的互联网行业中，华为、百度、腾讯、阿里等大公司逐渐傲视群雄，规模越来越大。 这些大佬公司深知互联网行业的各种弊端，逐渐延伸出很多服务，专门给了广大中小公司提供便利。 比如，你的公司开发一个系统，要用到人脸识别技术。一般公司是不会自己去开发一套的，那个耗时又费力。 但这些服务，这些大佬公司早就开发好了，你只需要付点费用，调用他们相关接口就可以实现了。 像这样的服务还有很多，...
8000字干货：那些很厉害的人是怎么构建知识体系的

App冷启动，你还要我怎样？

Android完整知识体系路线(菜鸟-资深-大牛必进之路)

【公众号回复 “1024”，免费领取程序员赚钱实操经验】大厂做开源是很认真，也是很可靠的。因为他们开源的很多项目都是内部用过的，经历过各种考验的。今天推荐的这个项目是腾讯...

【公众号回复 “1024”，免费领取程序员赚钱实操经验】今天我章鱼猫给大家带来的这个开源项目，估计很多喜欢听音乐的朋友都会喜欢。就目前来讲，很多人对这款音乐 App 都抱...

C语言这么厉害，它自身又是用什么语言写的？