求艺龙编程题【数字分组】解法

题目:数字分组
描述:给定一组数,问能否分成两组和相等的数,不必用上全部的数字。若能,求各组的和,否则输出“Impossible”
输入:
第一行:一个整数n(1<=n<=100),数的个数
第二行:n个正整数。这些数的和不超过2000
输出:
一行。
如果能分成两组和相同的数,输出和。
否则输出“Impossible”,不含引号

样例输入:
5
1 3 4 5 2
样例输出:
7
Hint:
可以分出3,4和5,2两组数,1保留。

求大佬们讲讲思路。
全部评论
    public static int getNum(int[] nums) {         if (nums == null || nums.length == 0) return 0;         int target = 0;         int n = nums.length;         for (int i = 0; i < nums.length; ++i) target += nums[i];         boolean[][] dp = new boolean[n + 1][target + 1];         dp[0][0] = true;         int i, j;         for (j = 1; j <= target; ++j) dp[0][j] = false;         for (i = 1; i <= n; ++i) {             for (j = 1; j <= target; ++j) {                 dp[i][j] = dp[i - 1][j];                 if (j >= nums[i - 1])                     dp[i][j] = dp[i - 1][j - nums[i - 1]] || dp[i][j];             }         }         for (j = target; j >= 0; --j) {             if (dp[n][j] && dp[n][j / 2]) return j / 2;         }         return -1;     }
点赞 回复 分享
发布于 2020-02-28 17:53
#include <cstdio> #include <algorithm> #include <cstring> using namespace std; int dp[20000]; int a[200]; int main(){ int n; scanf("%d", &n); for(int i = 0; i < n; i++)scanf("%d", &a[i]); memset(dp, 0, sizeof(dp)); dp[0] = 1; for(int i = 0; i < n; i++){ for(int j = 2000; j >= a[i]; j--){ if(dp[j - a[i]])dp[j] = 1; } } int ans = 0; for(int i = 1; i <= 1000; i++){ if(dp[i] && dp[i * 2])ans = i; } if(ans > 0)printf("%d\n", ans); else printf("Impossible"); } dp[i]表示组得成和为i
点赞 回复 分享
发布于 2017-10-12 10:13
点赞 回复 分享
发布于 2017-10-12 09:46
40% 想不通
点赞 回复 分享
发布于 2017-09-27 09:09
样例 为什么不能是 1,3一组, 4一组,其余不用,这样不是输出4吗
点赞 回复 分享
发布于 2017-09-27 01:19
动态规划,dp (i,j)表示前i个物品中两组相差为j是否成立,求出的dp(n,0)即为结果
点赞 回复 分享
发布于 2017-09-27 00:09
1 1 2 3应该返回的是多少呢
点赞 回复 分享
发布于 2017-09-26 23:46
bd,求个思路
点赞 回复 分享
发布于 2017-09-26 23:14
跑容量是所有数的和的01背包,然后枚举分割后的数组中数的和
点赞 回复 分享
发布于 2017-09-26 23:06
感觉不难,为啥写不出来呢
点赞 回复 分享
发布于 2017-09-26 22:56
通过了30%😖😖😖
点赞 回复 分享
发布于 2017-09-26 22:39
貌似动态规划,,
点赞 回复 分享
发布于 2017-09-26 22:32
我咋调都是10%。。而且想不到除了暴力以外的做法。。
点赞 回复 分享
发布于 2017-09-26 22:31

相关推荐

评论
点赞
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务