所以为啥结构体里的数组出问题了? 输入样例 1 1 为啥输出 0 0 0 0 0 1 0 1 0 0 0 -1 运行结果
#include<bits/stdc++.h>
using namespace std;
int g[10] = {6,2,5,5,4,5,6,3,7,6};
int n;
struct S{
int a[10];
int v;
}dp[100005];
bool cmp1(S A,S B,int o){
if(A.v + 1 < B.v){
return true;
}else if(A.v + 1 > B.v){
return false;
}else{
A.a[o]++;
for(int i = 0; i <= 9; i++){
if(A.a[o] > B.a[o]){
return true;
}else if(A.a[o] < B.a[o]){
return false;
}
}
}
return false;
}
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
dp[2].v = 1;
dp[2].a[1] = 1;
dp[3].v = 1;
dp[3].a[7] = 1;
dp[4].v = 1;
dp[4].a[4] = 1;
dp[5].v = 1;
dp[5].a[2] = 1;
dp[6].v = 1;
dp[6].a[6] = 1;
dp[7].v = 1;
dp[7].a[8] = 1;
for(int i = 8; i <= n; i++){
for(int j = 0; j <= 9; j++){
if(i - g[j] >= 2 && cmp1(dp[i - g[j]],dp[i],j)){
dp[i].v = dp[i - g[j]].v + 1;
for(int k = 0; k <= 9; k++){
dp[i].a[k] = dp[i - g[j]].a[k];
if(k == j){
dp[i].a[k]++;
}
}
}
}
}
for(int i = 1; i <= n; i++){
cout<<dp[i].v<<endl;
for(int i = 0; i <= 9; i++){
cout<<dp[i].a[i]<<' ';
}
cout<<endl;
}
if(dp[n].a[6] == 1 && dp[n].a[0] != 0){
dp[n].a[6]--;
dp[n].a[0]--;
dp[n].a[2]++;
dp[n].a[8]++;
}
if(dp[n].v == 0){
cout<<"-1"<<endl;
}else{
for(int i = 0; i <= 9; i++){
for(int j = 1; j <= dp[n].a[i]; j++){
cout<<i;
}
}
cout<<endl;
}
}
return 0;
}