解题思路:
多路递归
注意事项:
注意处理首尾不能都种的情况
参考代码:
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语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:939 |
矩形面积交 (Java代码)浏览:1220 |
C语言训练-最大数问题 (C语言代码)浏览:633 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:604 |
【蟠桃记】 (C语言代码)浏览:664 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:509 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:373 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:567 |
1124题解浏览:595 |
母牛的故事 (C语言代码)浏览:570 |