结构体里的数组出问题了
查看原帖
结构体里的数组出问题了
762650
Ennis_Zhang_is_happy楼主2024/10/27 20:40

所以为啥结构体里的数组出问题了? 输入样例 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;
}
2024/10/27 20:40
加载中...