为了账号安全,请及时绑定邮箱和手机立即绑定

c++翻译成pascal

c++翻译成pascal

C++
蝴蝶刀刀 2018-07-30 21:21:44
#include <stdio.h>#include <algorithm>#include <string.h>using namespace std;int dp[100000];int main(){int a[11],sum,v,i,j,k,cnt,cas = 1;while(~scanf("%d",&a[1])){sum = a[1];for(i = 2;i<=6;i++){scanf("%d",&a[i]);sum+=i*a[i];}if(!sum)break;printf("Collection #%d:\n",cas++);if(sum%2)//总和为奇数,必定不能平分{printf("Can't be divided.\n\n");continue;}v = sum/2;memset(dp,0,sizeof(dp));dp[0] = 1;for(i = 1;i<=6;i++){if(!a[i])continue;for(j = 1;j<=a[i];j*=2)//二进制优化{cnt = j*i;for(k = v;k>=cnt;k--){if(dp[k-cnt])//必须前面的能够放入背包,现在的才能放入背包dp[k] = 1;}a[i]-=j;}cnt = a[i]*i;//剩下的if(cnt){for(k = v;k>=cnt;k--){if(dp[k-cnt])dp[k] = 1;}}}if(dp[v])printf("Can be divided.\n\n");elseprintf("Can't be divided.\n\n");}return 0;}谢谢!急求!!各位大佬能回答一下吗
查看完整描述

2 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

var dp:array[0..100000]of longint;

    a:array[0..11]of longint;

    sum,i,v,j,k,cnt,cas

begin

    cas:=1;

    while (not eoln) do

    begin 

      read(a[1]);

      sum:=a[1];

      for i:=2 to 6 do 

      begin

        read(a[i]);

        sum:=sum+i*a[i];

      end;

      if (sum=0) break;

      writeln("Collection #%d:",cas++);

      if(sum mod 2=1)

      begin

        writeln("Can't be divided.");

        continue;

      end;

      v:=sum div 2;

      fillchar(dp,0,sizeof(dp));

      dp[0]:=1;  

      for i:=1 to 6 do 

      begin  

        if(a[i]=0) continue;

        j=1;

        while (j<=a[i]) do 

        begin

          cnt:=j*i;

          for k:=v downto cnt do 

            if(dp[k-cnt]) dp[k] = 1;

          a[i]=a[i]-j;

          j:=j*2;

        end;

        cnt:=a[i]*i;

        if (cnt=1)

        begin

            for k:=v downto cnt do 

            if (dp[k-cnt]=1) dp[k]=1;

        end;

      end;

      if (dp[v]=1) writeln("Can be divided.")

      else writeln("Can't be divided.\n\n");

    end;

end.

自己改一下吧,没有编译器,sorry了,不会的问我


查看完整回答
反对 回复 2018-08-01
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

动态规划背包问题吗?可以啊

查看完整回答
反对 回复 2018-08-01
  • 2 回答
  • 0 关注
  • 824 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信