求 free Pascal 就是一个背包,可以放入的重量为s.现有n件物品,重量分别为w1,w2,w3...wn,从n件中挑选若干件,使得放入背包的重量之和正好为s,找出一组解即可,无解时输出No result.输入样例5 101 2 3 4 5

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 15:29:49
求 free Pascal 就是一个背包,可以放入的重量为s.现有n件物品,重量分别为w1,w2,w3...wn,从n件中挑选若干件,使得放入背包的重量之和正好为s,找出一组解即可,无解时输出No result.输入样例5 101 2 3 4 5

求 free Pascal 就是一个背包,可以放入的重量为s.现有n件物品,重量分别为w1,w2,w3...wn,从n件中挑选若干件,使得放入背包的重量之和正好为s,找出一组解即可,无解时输出No result.输入样例5 101 2 3 4 5
求 free Pascal
就是一个背包,可以放入的重量为s.现有n件物品,重量分别为w1,w2,w3...wn,从n件中挑选若干件,使得放入背包的重量之和正好为s,找出一组解即可,无解时输出No result.
输入样例
5 10
1 2 3 4 5
输出样例
1 1
4 4
5 5
新手啊,被卡了好久了,谁能帮帮忙,结果没人回答.)

求 free Pascal 就是一个背包,可以放入的重量为s.现有n件物品,重量分别为w1,w2,w3...wn,从n件中挑选若干件,使得放入背包的重量之和正好为s,找出一组解即可,无解时输出No result.输入样例5 101 2 3 4 5

const n=5;
var w:array[1..n] of integer;
    v:array[1..n] of integer;
    k:integer;
    function max(m,n:integer):integer;
      begin
        if m>n then
          max:=m
        else
          max:=n;
      end;
    function maxval(i,aw:integer):integer;
      begin
        if i=1 then
          if w[i]<=aw then
             maxval:=v[i]
          else
            maxval:=0
        else
          maxval:=max(maxval(i-1,aw),maxval(i-1,aw-w[i])+v[i]);
      end;
    begin
      for k:=1 to n do
        read(w[k]);
      readln;
      for k:=1 to n do
        read(v[k]);
      write(maxval(n,15));
    end.


以上程序是递归的写法.还可以去研究动态规划的写法.



上面回答是背包问题求最优值的常用写法.至于你的问题不涉及到求最优值,只是关注是否存在满足重量的组合问题,代码如下.

 var  w : array[1..10]  of  integer  ;
         x,y ,i:integer ;  f : boolean ;
Function   beibao( s, n : integer ) : boolean ;
    var    k : integer ;
    begin

    if s=0 then     beibao:=true

    else if (s<0) or (S>0) and  (n<1) then beibao:=false
     else  begin
    if   beibao(s-w[n],n-1) then  begin
              writeln( n:5, w[n]:5) ;
                   beibao:=true;
           end
            else beibao:=beibao(s,n-1)
            end;
  end;
    begin

      readln(y) ;

      readln( x) ;
      for  I:=1  to   y  do  read(w[I]);
      f:=beibao(x,y);
      if   not(f)   then   writeln( 'not  find') ;
   end.

以上两段代码是对背包问题常见的问题解决.

程序经过本人测试,绝对能运行而且结果正确.

经常看到网上回答的网友写程序完全主观想象随意去写,不调试其正确性,本意是帮助别人是好的,可是缺乏严谨,往往让问问题的朋友耽误很多时间.有的写得太随意,更是让问问题的朋友不知所云.还有到处从别处复制代码粘贴过来,更是缺少诚恳助人之心.

希望回答问题的朋友,尽量更加严谨一点,让百度知道真正成为一个让中国人更加方便学习的地方,让中国人多掌握科学知识,从而提升综合国力.

求一个背包程序(PASCAL)最原始的 求 free Pascal 就是一个背包,可以放入的重量为s.现有n件物品,重量分别为w1,w2,w3...wn,从n件中挑选若干件,使得放入背包的重量之和正好为s,找出一组解即可,无解时输出No result.输入样例5 101 2 3 4 5 求PASCAL背包问题和无限背包思路和程序 free pascal 求最大公约数与最小公倍数 FREE PASCAL,输入两个数,求最小公倍数 free pascal 求最大公约数与最小公倍数 求Free Pascal程序问题如下:第一行输入一个正整数n(1 急求free pascal错误表本人急需要free pascal错误表,一定是要带中文的,所用的free pascal版本为1.0.6,一定要是free pascal,而不是turbo pascal或者其他的 free pascal常见语句 求几道 初学 free pascal free pascal 黑洞6174 pascal语言编程问题(free pascal求1—N中的素数的个数.(1 Free pascal 求连续数字的平方和Description 编程求1平方+2平方+...+n平方 Input 输入一行,只有一个整数n(1 free pascal怎样产生随机数 求平均数 用free pascal输入n个数,求出这些数的平均数.输入:只有一行共有n个数,数与数之间用一个空格隔开 (1 Free Pascal 和Pascal的区别?为什么竞赛都用Free Pascal?Free Pascal 和Pascal的区别?为什么竞赛都用Free Pascal? Free Pascal 如何求出一个数组中的有效元素个数 难道高精度计算一般要转成字符型来求数的长度?如a:(0,0,0,0,1,0,1)那么这个数是101 有效位数就是3位如果有这么一个函数就好了……求具体程 查一下错Free Pascal: 有一个三位数,它的各位数字之和的11倍恰好等于它自身,请编程求出这个三位数.我用Free Pascal做的,就是不能运行,帮忙查一下错:var a,b,c,s:integer;begin for s:=100 to 999 do begin