Le nombre maximum de matchstick peut être composé de
2020 astuce printemps Baidu question stylo
sujet:
entrée Matchstick le nombre n, le nombre de chiffres m peut être sélectionné, et la liste sélectionnée de nombres peut être le
cas entrée (cas I oublie le titre, Xia Xie origine)
20 est. 4
. 5. 6. 7. 8
sorties peuvent être composés plus grand entier
Solution: utiliser la programmation dynamique, le code lien github , si l'erreur espoir a également noté Novice vous remerciant à l' avance
#include <cstdio>
#include <cmath>
#include <vector>
using namespace std;
int number[10] = { 0,1,2,3,4,5,6,7,8,9 };
int expend[10] = { 0,2,5,5,4,5,6,3,7,6 };
int main() {
int n, m;
scanf("%d", &n);
scanf("%d", &m);
vector<bool> canuse(10, false);
vector<int> dp(n+1,0);
for (int i = 0; i<m; i++) {
int temp;
scanf("%d", &temp);
canuse[temp] = true;
}
dp[0]=0;
for(int i=1;i<=n;i++){
int choice=0;
int maxvalue=0;
for(int j=1;j<=9;j++){
if(canuse[j]) {
if(i-expend[j]<0) continue;
if(dp[i-expend[j]]==-1) continue;
if(dp[i-expend[j]]>=maxvalue){
choice=j;
maxvalue=dp[i-expend[j]];
}
}
}
if(choice==0) dp[i]=-1;
else{
dp[i]=maxvalue*10+choice;
}
//printf("%d\n",dp[i]);
}
printf("%d",dp[n]);
return 0;
}
2020 14 Mars