原题链接:蓝桥杯算法提高VIP-阮小二买彩票
解题思路:使用全排序 ,然后从小到大排序 去重就好
注意事项:
参考代码:
import java.awt.print.Book;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
public class 彩票 {
/**
* @param args
*/
static String n="";
static int[] book = new int[10];// 手牌
static int[] a = new int[10];// 三个盒子
static ArrayList<String> arrayList;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
n=scanner.next();
arrayList=new ArrayList<String>();
for (int i = 0; i <n.length(); i++) {
int sum=Integer.parseInt(""+n.charAt(i));
book[sum]++;
}
dfs(1);
Collections.sort(arrayList);
String d="";
for (String str : arrayList) {
if (str.equals(d)) {
}
else {
System.out.println(str);
d=str;
}
}
}
static void dfs(int step) {
if (step==n.length()+1) {//结束条件
String num="";
for (int i = 1; i <=n.length(); i++) {
num+=a[i];
}
arrayList.add(num);
return;
}
for (int i = 0; i <n.length(); i++) {
int sum=Integer.parseInt(""+n.charAt(i));
if (book[sum] >=1) {// 判断手上是否有这张手牌
//使用扑克牌
a[step] = sum;//把牌放到空盒子里
book[sum]--;//标记手上没有这张牌
dfs(step + 1);//调用之前的方法
book[sum]++;//结束后牌拿出
}
}
return;
}
}0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复