解题思路:
多路递归
注意事项:
注意处理首尾不能都种的情况
参考代码:
import java.util.Scanner; public class Main { static int max = 0; static int m ; static boolean flag = false;//标记是否能种 static int ss; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); m = sc.nextInt(); int[] a = new int[n]; for (int i = 0; i < a.length; i++) { a[i] = sc.nextInt(); } for (int i = 0; i < a.length; i++) { ss = i;//记录 i=0的情况 dfs(a,1,i,a[i]); } if(flag) System.out.println(max); else System.out.println("Error!"); } private static void dfs(int[] a, int mm, int k,int sum) { // mm 表示种下第几棵树,k代表将要种下树的位置,sum代表美化值和 if(ss == 0 && k == a.length-1){//处理首尾不能都种的情况 return; } if (mm == m){ if(max < sum){ flag = true;//能种下 max = sum;//更新最大值 } return; } for (int i = k+2; i < a.length; i++) { dfs(a, mm+1, i,sum+a[i]);//递归解决下一个种树的位置 } } }
0.0分
1 人评分
字符串比较 (C语言代码)答案错误????浏览:641 |
简单的a+b (C语言代码)浏览:564 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:484 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:1052 |
【简单计算】 (C语言代码)浏览:642 |
WU-格式化数据输出 (C++代码)浏览:1312 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:863 |
剪刀石头布 (C++代码)浏览:1811 |
Tom数 (C语言代码)浏览:581 |
Tom数 (C语言代码)浏览:598 |