| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4727 人关注过本帖
标题:求此题解解题思路最有附加代码
只看楼主 加入收藏
zglieren303
Rank: 1
等 级:新手上路
帖 子:29
专家分:1
注 册:2008-11-6
收藏
得分:0 
那些题还不错,建议房主把那些帖子粘贴过来!大家可以讨论讨论!你是杭州电子科技大学的么?
2010-04-11 18:18
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
收藏
得分:0 
回复 31楼 zglieren303
不是  不过我们都在做杭电的题目,大家可以都去做啊   一起学习啊
2010-04-11 21:56
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
收藏
得分:0 
回复 30楼 Devil_W
这不是水题好不,DP题目中算难的了, 貌似你很牛  看你12到用多少时间鸟掉啊 都鸟掉了记得把解题思路跟我说说啊 ,谢谢啦
2010-04-11 21:58
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
00379412    2010-04-12 11:33:49    Accepted    1001    31 MS    284 KB    Visual C++    wxjeacen


1001 pass
2010-04-12 11:34
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
打秋风的飘过。

想象力征服世界
2010-04-12 12:29
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
00379514    2010-04-12 16:58:36    Accepted    1014    156 MS    320 KB    Visual C++    wxjeacen


1014 pass
2010-04-12 16:59
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
收藏
得分:0 
回复 36楼 Devil_W
厉害啊,呵呵。求代码和解题思路 对了 你是用C++写的哦 那就求思路吧

快去把1004 AC了啊
2010-04-12 17:26
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
1004 我run了两次,两次都fail了。faint!

时间比较紧,公司事情多,有时间再check.
2010-04-12 17:43
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
程序代码:
#include <cstdio>
#include <algorithm>

using namespace std;

const int INF = 1000000000;
const int MAX_N = 20;

int dp[MAX_N][MAX_N];
int a[MAX_N], b[MAX_N], c[MAX_N];

int main() {
    int n;
    while (scanf("%d", &n), n) {
    int h, s, f;
    scanf("%d%d%d", &h, &s, &f);
    for (int i = 1; i <= n; ++i) {
        scanf("%d", a + i);
        b[i] = a[i];
    }
    sort(b + 1, b + n + 1);
    int maxi = 0;
    for (int i = 1; i <= n; ++i) {
        c[i] = lower_bound(b + 1, b + n + 1, a[i]) - b;
        maxi = max(maxi, c[i]);
    }
    for (int i = 0; i <= n; ++i)
        for (int j = 0; j <= maxi; ++j)
        dp[i][j] = INF;
    dp[0][0] = 0;
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= maxi; ++j) {
        if (a[j] < a[i]) continue;
        for (int k = 1; k <= maxi; ++k) {
            int w;
            if (a[j] < a[k]) w = (a[k] - a[j]) * f;
            else if (a[j] == a[k]) w = 0;
            else w = (a[j] - a[k]) * h;
            w += a[j] * s;
            dp[i][j] = min(dp[i][j], dp[i - 1][k] + w);
        }
        }
    }
    int ret = INF;
    for (int j = c[n]; j <= maxi; ++j)
        ret = min(ret, dp[n][j]);
    printf("%d\n", ret);
    }
    return 0;
}


你看看我的DP function看哪里错了。

1004的source code.

[ 本帖最后由 Devil_W 于 2010-4-12 17:45 编辑 ]
2010-04-12 17:43
zhuxu0423
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:59
专家分:101
注 册:2010-4-12
收藏
得分:0 
看不懂英文,谁换一个中文上来呀
2010-04-12 19:17
快速回复:求此题解解题思路最有附加代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019658 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved