今天做的装箱问题挺难的,第一遍做以为是贪心,后来发现这个属于背后问题,但是我背包问题还不熟悉,没做个训练,就去找书看了一下,然后改了依稀过了

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include<iomanip>
#include<string>
using namespace std;
int V,N,v[35],f[20005];
int main()
{
scanf("%d%d",&V,&N);
for(int i=1;i<=N;i++)
scanf("%d",&v[i]);
for(int i=1;i<=N;i++)
for(int j=V;j>=v[i];j--)
{
f[j]=max(f[j],f[j-v[i]]+v[i]);
}
cout<<V-f[V]<<endl;
}

还有一道比较难的就是进制转换,因为有10进制以上的了所以要用到字符串和ascll码

#include <stdio.h>
char str[100];
int a,b;
int num,tmp,i;
int main() {
while(scanf("%s %d",str, &b) != EOF)
{
num = 0;
for(i=0; str[i]; i++)
{
if(str[i] >= 'a')
str[i] -= 32;
tmp=(str[i]>='A'?str[i]-'A'+10:str[i]-'0');
num=num*10+tmp;
}
int cnt=0;
if(num == 0)
{
puts("0");
continue;
}
while(num)
{
if(num%b <=9)
str[cnt++] = num%b+'0';
else
str[cnt++] = num%b-10+'A';
num = num/b;
}
for(i=cnt-1; i>=0; i--)
printf("%c",str[i]);
puts("");
}
return 0;
}
加油!!!