1 条题解

  • 0
    @ 2025-2-14 21:20:40

    C :

    #include "stdio.h"
    int m,n,t;
    int w[30],v[30],p[30],V[201][11];
    int main()
    {
    	int i,j,k,l;
    	int max;
    	scanf("%d%d%d",&m,&n,&t);
    	for(i=0;i<n;i++)
    		scanf("%d%d%d",&w[i],&v[i],&p[i]);
    	for(k=1;k<=t;k++)
    	{
    		for(i=0;i<n;i++)
    			if(p[i]==k)
    			{
    				for(j=m;j>=w[i];j--)
    				{
    					for(l=0;l<k;l++)
    						if(V[j][k]<V[j-w[i]][l]+v[i])
    							V[j][k]=V[j-w[i]][l]+v[i];
    				}
    			}
    	}
    	max=0;
    	for(i=1;i<=t;i++)
    		if(max<V[m][i])
    			max=V[m][i];
    		printf("%d\n",max);
    	return 0;
    }
    
    

    C++ :

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    int v,n,t,p;
    int f[201]={0},w[40],c[40],a[40][40]={0};
    int main()
    {
    	cin>>v>>n>>t;
    	for(int i=1;i<=n;i++)
    	{
    		cin>>w[i]>>c[i]>>p;
    		a[p][++a[p][0]]=i;
    	}
    	for(int i=1;i<=t;i++)
    		for(int j=v;j>=0;j--)
    			for(int k=1;k<=a[i][0];k++)
    				if(j>=w[a[i][k]] && f[j]<f[j-w[a[i][k]]]+c[a[i][k]]) 
    				f[j]=f[j-w[a[i][k]]]+c[a[i][k]];
    	cout<<f[v]<<endl;
    	return 0;
    }
    

    Pascal :

    program zxt;
    var f,a,c,w:array [0..200] of integer;
        i,j,k,m,n,t:integer;
    function max(x,y:integer):integer;
    begin
      if x>y then max:=x else max:=y;
    end;
    begin
      readln(m,n,t);
      for i:=1 to n do
        readln(c[i],w[i],a[i]);
      for k:=1 to t do
        for j:=m downto 1 do
          for i:=1 to n do
            if a[i]=k then
              if j>=c[i] then f[j]:=max(f[j],f[j-c[i]]+w[i]);
      writeln(f[m]);
    end.
    
    • 1

    信息

    ID
    783
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者