求购买字符串的最少硬币。
如果一个字符,更改它和购买它所花费的硬币比原来多,那么就不去更改它,
反之则更改。
#include<stdio.h> #include<string.h> int main(){ int t; scanf("%d",&t); for(int i=0;i<t;i++){ int n,c0,c1,h; scanf("%d %d %d %d",&n,&c0,&c1,&h); char s[1100]; getchar(); gets(s); int len=strlen(s); int a=0,b=0; for(int j=0;j<len;j++){ if(s[j]=='0') a++; } b=n-a; if(c0>c1){ if(h+c1<c0) printf("%d\n",n*c1+h*a); else printf("%d\n",a*c0+b*c1); } else { if(h+c0<c1) printf("%d\n",n*c0+h*b); else printf("%d\n",a*c0+b*c1); } } return 0; }