WA了,求帮助(样例前面一行对了,后面的都错了)
查看原帖
WA了,求帮助(样例前面一行对了,后面的都错了)
1626339
jiajia20150127楼主2025/6/21 22:10
#include<bits/stdc++.h>
using namespace std;
int n,x,lens,minn,idm;
string s;
int a[22][22],b[22][22]; 
struct node{
	int cs,id;
}h[282];
bool cmp(node x,node y){
	if(x.cs!=y.cs) return x.cs>y.cs;
	return x.id<y.id;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;++i){
		cin>>s;
		if(i==1) lens=s.size();
		for(int j=0;j<=lens-1;j+=2){
			if(s[j]>='0'&&s[j]<='9') a[i][(j+2)/2]+=(s[j]-48)*16;
			else a[i][(j+2)/2]+=(s[j]-55)*16;
			if(s[j+1]>='0'&&s[j+1]<='9') a[i][(j+2)/2]+=(s[j+1]-48);
			else a[i][(j+2)/2]+=(s[j+1]-55);
			h[a[i][(j+2)/2]].cs++;
			h[a[i][(j+2)/2]].id=a[i][(j+2)/2];
		}
	}
	lens/=2;
	sort(h+1,h+257,cmp);
	for(int i=1;i<=16;++i){
		int id1=h[i].id/16,id2=h[i].id%16;
		if(id1>=10) cout<<char(id1+
		55);
		else cout<<char(id1+48);
		if(id2>=10) cout<<char(id2+55);
		else cout<<char(id2+48);
	}
	cout<<"\n"; 
	for(int i=1;i<=n;++i) for(int j=1;j<=lens;++j){
		minn=256;
		for(int k=1;k<=16;++k) if(abs(a[i][j]-h[k].id)<=minn){
			minn=abs(a[i][j]-h[k].id);
			idm=k;
		}
		b[i][j]=idm;
	}
	for(int i=1;i<=n;++i){
		for(int j=1;j<=lens;++j){
			if(b[i][j]>=10) cout<<char(b[i][j]+55);
			else cout<<char(b[i][j]+48);
		}
		cout<<"\n";
	}
	return 0;
}

WA

WHY?

2025/6/21 22:10
加载中...