| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 640 人关注过本帖
标题:谁能帮看下代码哪里错了!!!!!急.......(dp+路径压缩)
只看楼主 加入收藏
a351357741
Rank: 2
等 级:论坛游民
帖 子:117
专家分:70
注 册:2010-9-15
结帖率:87.5%
收藏
已结贴  问题点数:20 回复次数:7 
谁能帮看下代码哪里错了!!!!!急.......(dp+路径压缩)
【问题描述】



在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子,青蛙很讨厌踩在这些石子上。由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:0,1,……,L(其中L是桥的长度)。坐标为0的点表示桥的起点,坐标为L的点表示桥的终点。青蛙从桥的起点开始,不停的向终点方向跳跃。一次跳跃的距离是S到T之间的任意正整数(包括S,T)。当青蛙跳到或跳过坐标为L的点时,就算青蛙已经跳出了独木桥。

题目给出独木桥的长度L,青蛙跳跃的距离范围S,T,桥上石子的位置。你的任务是确定青蛙要想过河,最少需要踩到的石子数。



【输入文件】



输入文件river.in的第一行有一个正整数L(1 <= L <= 109),表示独木桥的长度。第二行有三个正整数S,T,M,分别表示青蛙一次跳跃的最小距离,最大距离,及桥上石子的个数,其中1 <= S <= T <= 10,1 <= M <= 100。第三行有M个不同的正整数分别表示这M个石子在数轴上的位置(数据保证桥的起点和终点处没有石子)。所有相邻的整数之间用一个空格隔开。



【输出文件】



输出文件river.out只包括一个整数,表示青蛙过河最少需要踩到的石子数。



【样例输入】



10
2 3 5
2 3 5 6 7



【样例输出】



2



【数据规模】



对于30%的数据,L <= 10000;

对于全部的数据,L <= 109。


#include <stdio.h>
const int Maxn=100;
FILE  *f1,*f2;
int a[Maxn+2]={0},f[12000]={0};
void QuickSort(int t,int w)
{
     if(t<w)
     {
            int l=t,r=w;
            int p=a[l];
            while(l<r)
            {
                      while(l<r&&p<a[r])
                       r--;
                      if(l<r)
                       a[l++]=a[r];
                      while(l<r&&p>a[l])
                       l++;
                      if(l<r)
                       a[r--]=a[l];
            }
            a[l]=p;
            QuickSort(t,l-1);
            QuickSort(l+1,w);
     }
}
int main()
{
    f1=fopen("river.in","r");
    f2=fopen("river.out","w");
    int l,s,t,m;
    fscanf(f1,"%d%d%d%d",&l,&s,&t,&m);
    for(int i=1;i<=m;i++)
     fscanf(f1,"%d",&a[i]);
    if(s==t)
    {
          int sum=0;
          for(int i=1;i<=m;i++)  
           if(a[i]%s==0)
            sum++;
           fprintf(f2,"%d",sum);
          return 0;
    }
    QuickSort(1,m);
    a[m+1]=l;
    for(int i=1;i<=m+1;i++)
     {
            if(a[i]-a[i-1]>=Maxn)
             a[i]=a[i-1]+Maxn;
            f[a[i]]=1;
     }
     
    l=a[m+1];
    f[l]=0;
    for(int i=1;i<=l;i++)
    {
            int min=101;
            for(int j=s;j<=t;j++)
             if(i-j>=0&&f[i-j]+f[i]<min)
              min=f[i-j]+f[i];
            f[i]=min;
    }
   fprintf(f2,"%d ",f[l]);
    fclose(f1);
    fclose(f2);
}
搜索更多相关主题的帖子: 路径 代码 压缩 
2010-09-29 21:43
wuzhanghao88
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:45
专家分:146
注 册:2009-10-25
收藏
得分:0 
是不是美女哟!我寝友叫我先不回!谨防上当受骗!
2010-09-29 22:14
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:20 
有什么错误提示??我这里运行好像可以出结果啊!!
不过你这里没给出其他的样例,我也没办法做更多的测试啊!!

[ 本帖最后由 jack10141 于 2010-9-29 22:32 编辑 ]

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-09-29 22:30
a351357741
Rank: 2
等 级:论坛游民
帖 子:117
专家分:70
注 册:2010-9-15
收藏
得分:0 
回复 3楼 jack10141
问题以解决 在压缩路径的时候 没弄好
2010-09-30 08:44
a351357741
Rank: 2
等 级:论坛游民
帖 子:117
专家分:70
注 册:2010-9-15
收藏
得分:0 
回复 2楼 wuzhanghao88
我男的!
2010-09-30 08:44
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:0 
男的还搞一个女人图片?汗

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-09-30 08:52
a351357741
Rank: 2
等 级:论坛游民
帖 子:117
专家分:70
注 册:2010-9-15
收藏
得分:0 
回复 6楼 jack10141
美女人人爱!
2010-09-30 08:54
wuzhanghao88
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:45
专家分:146
注 册:2009-10-25
收藏
得分:0 
真是的!我受伤了!
2010-09-30 11:51
快速回复:谁能帮看下代码哪里错了!!!!!急.......(dp+路径压缩)
数据加载中...
 
   



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

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