user-0 提问: 求问该算法题，小白不会代码，求大佬的代码！要能运行的

回复:
user: user-1
content: 刚学了动态规划，感觉很符合这个题型，，

user: user-2
content: 引用 3 楼 lm23的回复:这个输入好像不行吧，本人是最初级菜鸟，求大佬写完 我才上了三天，我都能看懂，你太菜了

user: user-3
content: 这不是acm上的题？？？？同学，大一大二打基础，你这就做伸手党不好吧！毕业怎么找工作

user: user-4
content: 引用 1 楼 niiiloc的回复:不会代码还来问什么？最烦这些只会伸手要代码的 人家都说了小白，难道你开始学这个就什么都会？

user: user-0
content: 大佬们说的是

user: user-5
content: #include "stdio.h" #include "string.h"  #define MAX_ARRAY 100 int dp[MAX_ARRAY];  int MaxSum(int a[], int n) { 	memset(dp, 0, sizeof(dp)); 	int maxSum = 0; 	int minus = 0; 	int sum0 = 0; 	int sum1 = 0; 	int begin; 	for (int i = n - 1; i >= 0; i--) 	{ 		dp[i] = a[i]; 		if (a[i] > 0) 		{ 			if (minus == 0) continue; 			sum0 += a[i]; 		} 		else 		{ 			if (++minus == 2) 			{ 				if (sum0 < sum1) 				{ 					for (int j = begin; j > i; j--) 						dp[j] = -a[j]; 				} 				minus = 1; 				begin = i; 				sum0 = 0; 				sum1 = 0; 			} 			else 				begin = i;  			sum1 -= a[i]; 		} 	}  	for (int k = 0; k < n; k++)  	{ 		maxSum += dp[k]; 		printf("\na[%d]:%d\t\tdp:%d", k, a[k], dp[k]); 	} 	return maxSum; }  void main() { 	int a0[] = {1, -2, 3, -4, 5}; 	int a1[] = { 1, -4, -7 }; 	int a2[] = { 1, -4, -7, -8, 3 }; 	int a3[] = { 1, -2, -7, 3, 10, 11, -4, 5, -6 }; 	int l; 	int size = sizeof(a0) / sizeof(int); 	printf("\nn:%d\n", size); 	for (l = 0; l < size; l++)		printf("%d,", a0[l]); 	printf("\nmaxSum:%d\n\n", MaxSum(a0, size));  	size = sizeof(a1) / sizeof(int); 	printf("\nn:%d\n", size); 	for (l = 0; l < size; l++)		printf("%d,", a1[l]); 	printf("\nmaxSum:%d\n\n", MaxSum(a1, size));  	size = sizeof(a2) / sizeof(int); 	printf("\nn:%d\n", size); 	for (l = 0; l < size; l++)		printf("%d,", a2[l]); 	printf("\nmaxSum:%d\n\n", MaxSum(a2, size));  	size = sizeof(a3) / sizeof(int); 	printf("\nn:%d\n", size); 	for (l = 0; l < size; l++)		printf("%d,", a3[l]); 	printf("\nmaxSum:%d\n\n", MaxSum(a3, size));  	printf("\ninput 2 group number:"); 	for (int j = 0; j < 1; j++) 	{ 		int b[MAX_ARRAY]; 		int n; 		if (j == 0) 			printf("\ninput first group number:"); 		else 			printf("\ninput second group number:"); 		scanf("%d", &n); 		for (int i = 0; i < n; i++) 			scanf("%d", &b[i]);  		printf("\nmaxSum:%d\n\n", MaxSum(b, n));  	} }

user: user-0
content: 可以马上结贴。

user: user-0
content: 输入不对....

user: user-0
content: 这个输入好像不行吧，本人是最初级菜鸟，求大佬写完

user: user-6
content: 仅供参考：//给定一个正整数序列a(1)，a(2)，...，a(n),(1<=n<=20) //不改变序列中每个元素在序列中的位置，把它们相加，并用括号记每次加法所得的和，称为中间和。 // 例如: // 给出序列是4，1，2，3。 // 第一种添括号方法: //((4+1)+(2+3))=((5)+(5))=(10) // 有三个中间和是5，5，10，它们之和为:5+5+10=20 // 第二种添括号方法 // (4+((1+2)+3))=(4+((3)+3))=(4+(6))=(10) // 中间和是3，6，10，它们之和为19。 //描述 Description //   现在要添上n-1对括号，加法运算依括号顺序进行，得到n-1个中间和，求出使中间和之和最小的添括号方法。 //输入格式 Input Format //   共两行。 //第一行，为整数n。(1<=n<=20) //第二行，为a(1),a(2),...,a(n)这n个正整数，每个数字不超过100。 //输出格式 Output Format //   输出3行。 //第一行，为添加括号的方法。 //第二行，为最终的中间和之和。 //第三行，为n-1个中间和，按照从里到外，从左到右的顺序输出。 // //时间限制 Time Limitation //   各个测试点1s //注释 Hint //   在相同的情况下，括号尽可能的向左加 // //一道典型区间dp题目，方程为f[i][j]=min(f[i][k]+f[k+1][j]+a[i][j]) (i<=k<j). //f[i][j]为区间（i,j）的最小中间和之和,a[i][j]为区间（i,j）元素之和。 //用g[i][j]记录合并f[i][j]时的k值，最后递归输出，注意顺序即可。 //原题打错了，最后一句应该为“括号尽可能的向左加”，我已改正。 //类似的区间dp题目还有能量项链，合并傻子，合并沙子等， //做这类题目要注意dp的变量循环顺序，一般在最外层枚举区间长度，最内层枚举断点， //当然f[i][j]的意义也可以改变，只要注意方程的正确性即可。还有边界条件也是容易错的地方，需要注意。这类题目多加练习就没什么问题了。 #include <stdio.h> #include <limits.h> int a[21][21]; int f[21][21]; int g[21][21]; int i,j,k,n,t,l,kk; void sout(int l,int r) {     if (l==r) {printf("%d",a[l][l]);return;}     printf("(");     sout(l,g[l][r]);     printf("+");     sout(g[l][r]+1,r);     printf(")"); } void wout(int l,int r) {     if (l==r) return;     wout(l,g[l][r]);     wout(g[l][r]+1,r);     printf("%d ",f[l][r]-f[l][g[l][r]]-f[g[l][r]+1][r]); } int main() {     scanf("%d",&n);     for (i=1;i<=n;i++) scanf("%d",&a[i][i]);     for (i=1;i<=n-1;i++) {         for (j=i+1;j<=n;j++) {             a[i][j]=a[i][j-1]+a[j][j];         }     }     for (l=1;l<=n-1;l++) {         for (i=1;i<=n-l;i++) {             j=i+l;             t=INT_MAX;             for (k=i;k<=j-1;k++) {                 if (f[i][k]+f[k+1][j]+a[i][j]<=t) {                     t=f[i][k]+f[k+1][j]+a[i][j];                     kk=k;                 }             }             f[i][j]=t;             g[i][j]=kk;         }     }     sout(1,n);     printf("\n");     printf("%d\n",f[1][n]);     wout(1,n);     return 0; } //输入： //4 //4 1 2 3 //输出： //(4+((1+2)+3)) //19 //3 6 10

user: user-7
content: 不会代码还来问什么？最烦这些只会伸手要代码的

user: user-8
content: 这个现象越来越严重了。

user: user-6
content: 引用 8 楼 user-9 的回复:老赵，不需要你帮我领悟，你帮我上个厕所撒。 引用 6 楼 zhao4zhong1 的回复:提醒：再牛×的老师也无法代替学生自己领悟和上厕所！

user: user-9
content: 老赵，不需要你帮我领悟，你帮我上个厕所撒。 引用 6 楼 zhao4zhong1 的回复:提醒：再牛×的老师也无法代替学生自己领悟和上厕所！

user: user-0
content: haode xieixe

user: user-6
content: 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！