当前位置: 首页> 健康> 美食 > 游戏制作要学什么专业_天津软件优化公司排名前十_百度竞价推广流程_提交网站收录入口

游戏制作要学什么专业_天津软件优化公司排名前十_百度竞价推广流程_提交网站收录入口

时间:2025/7/13 7:27:31来源:https://blog.csdn.net/2301_76231651/article/details/146539743 浏览次数:1次
游戏制作要学什么专业_天津软件优化公司排名前十_百度竞价推广流程_提交网站收录入口

看到这个题目,ok是dfs问题(排列和组合问题都可以用dfs来解决)

让自己给气笑了,简直

老师说理解不了就直接记住,

做的题多了就理解了

先看这个题目

我们拿样例来举例输入 5 3 

1-5 5个数字里面选择3个数字,

按照字典顺序输出(就是从小到大输出)

我们分别用两个变量来记录我们选到了那个数字,以及已经选了多少个数字

dfs其实不是一种算法,就是一种穷举,本质就是把所有的可能情况都选出来

最一开始我们一个数字也没有选,

是不是可以看成我们选的0 ,然后选了0个数

dfs(0,0);

我们先从1开始选数字,可以选到n

然后我们用一个数组来保存我们选择的的数

然后我们不断的去选数,

并记录当前选到了1到n当中的那个数字,

以及选了多少个数字

我们当前已经把c给选了,

所以如果下一次要再选的话只能从c+1开始

选到n截止

//        从当前元素的下一个位置开始便利
//        按照字典顺序添加for (int i = c+1; i <=n ; i++) {
//            把i添加到数组中a[cnt+1] =i;
//dfs(i,cnt+1);
//            回复现场a[cnt+1] = 0 ;}

然后的话递归只要记住递归函数的亲啊后

我们选够了m个数字是不是就可以打印了呀

//如果已经选出来了m个元素,那就就把选出来的m个元素输出
//        选够了九八选的打印出俩if(cnt==m){
//            使用循环便利数组中的m个数a[i]for (int i = 1; i <=m ; i++) {System.out.print(a[i]+" ");}
//            便利完成要换行System.out.println();
//            递归结束return;}

然后打印完成之后回溯

或者如果我们剩余的数字不够选我们是不是就可以回溯了

//        剪枝,如果现在的if(n-c+cnt<m)return;

整体代码如下

package Lanqiao;import java.util.Scanner;/*** @author zb* date2025/3/26 19:18*/
public class L19686 {static int[]a = new int[100];static Scanner in =new Scanner(System.in);static int n;static int m;public static void main(String[] args) {n = in.nextInt();m = in.nextInt();dfs(0,0);in.close();}//c是目前元素的位置,cnt代表已经选了多少个元素static void dfs(int c , int cnt){//        剪枝,如果现在的if(n-c+cnt<m)return;
//如果已经选出来了m个元素,那就就把选出来的m个元素输出
//        选够了九八选的打印出俩if(cnt==m){
//            使用循环便利数组中的m个数a[i]for (int i = 1; i <=m ; i++) {System.out.print(a[i]+" ");}
//            便利完成要换行System.out.println();
//            递归结束return;}
//        从当前元素的下一个位置开始便利
//        按照字典顺序添加for (int i = c+1; i <=n ; i++) {
//            把i添加到数组中a[cnt+1] =i;
//dfs(i,cnt+1);
//            回复现场a[cnt+1] = 0 ;}}}

关键字:游戏制作要学什么专业_天津软件优化公司排名前十_百度竞价推广流程_提交网站收录入口

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: