1 solutions

  • 0
    @ 2025-3-3 16:24:09

    C :

    #include<stdio.h>
    #include<math.h>
    main()
    {
    	int i,j,k;
    	int n,m;
    	int a[11],f[101];
    	for(i=1;i<=10;i++)
    	scanf("%d",&a[i]);
        scanf("%d",&n);
    for(i=1;i<=n;i++) 
    f[i]=0xfffffff;   
        f[0]=0;
        for(i=1;i<=n;i++)
        for(j=i-1;j>=0&&j>=i-10;j--)
        if(f[i]>f[j]+a[i-j])
        f[i]=f[j]+a[i-j];  
       printf("%d\n",f[n]);
    	 return 0; 
    }
    

    C++ :

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    using namespace std;
    int f[1001];
    int a[1001],b[1001];
    int minx(int x,int y)
    {
        if(x<y) return x;
        else return y;
    }
    int main()
    {
        int m,t;
        int i,j;
        memset(f,63,sizeof(f));
        f[0]=0;
        for(i=1;i<=10;i++)
        {
           a[i]=i;scanf("%d",&b[i]);
        }
        scanf("%d",&t);
        for(i=1;i<=10;i++)
        {
          for(j=1;j<=t;j++)
          {
             if(j>=a[i])
             {
                f[j]=minx(f[j],f[j-a[i]]+b[i]);
             }
          }
    
        }
        printf("%d\n",f[t]);
        return 0;
    }
    
    • 1

    Information

    ID
    10014
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By