原题链接:蓝桥杯算法提高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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复