大佬求助!65分求助
查看原帖
大佬求助!65分求助
1070523
ybc2027_yangshoukuo楼主2023/10/17 20:28

大佬们,谁懂啊!
我就去了一个前导0,瞬间从65分变为5分,这还不如不该呢!┗( ▔, ▔ )┛
未改程序:

#include <bits/stdc++.h>
using namespace std;
struct str_dz{
	int a,b,c,d,e;
};
int read(int& i,string s){
	int res=0;
	while(s[i]>='0'&&s[i]<='9'){
		res=res*10+(s[i]-'0');
		i++;
	}
	return res;
}
int n,tot,isf,str_s[5]={255,255,255,255,65535};
char str_g[4]={'.','.','.',':'} ;
string s2,s;
vector<str_dz> v1;
vector<int> f;
int find(str_dz dz){
	for(int i=0;i<tot;i++){
		if(v1[i].a==dz.a&&v1[i].b==dz.b&&v1[i].c==dz.c&&v1[i].d==dz.d&&v1[i].e==dz.e){
			return f[i];
		}
	}
	return -1;
}
int main(){
	cin >> n;
	for(int i=1;i<=n;i++){
		cin >> s2 >> s;
		isf=0;
		int j=0,dz[5];
		for(int k=0;k<5;k++){
			dz[k]=read(j,s);
			if(k<4){
				if(s[j]!=str_g[k]) isf=1;
			}
			if(dz[k]>str_s[k]) isf=1;
			j++;
		}
		str_dz str;
		str.a=dz[0],str.b=dz[1],str.c=dz[2],str.d=dz[3],str.e=dz[4];
		if(isf==1){
			cout << "ERR\n";
			continue;
		}
		if(s2[0]=='S'){
			if(find(str)!=-1){
				cout << "FAIL\n";
			}else{
				v1.push_back(str);
				f.push_back(i);
				tot++;
				cout << "OK\n";
			}
		}else{
			int m=find(str);
			if(m==-1){
				cout << "FAIL\n";
			}else{
				cout << m << endl;
			}
		}
	}
	return 0;
} 

改后程序:```cpp #include <bits/stdc++.h> using namespace std; struct str_dz{ int a,b,c,d,e; }; int n,tot,isf,str_s[5]={255,255,255,255,65535}; char str_g[4]={'.','.','.',':'} ; string s2,s; vector<str_dz> v1; vector f; int read(int& i,string s){ int res=0,isk=0; while(s[i]>='0'&&s[i]<='9'){ if(s[i]=='0'&&isk==0) isf=1; if(s[i]>='1'&&s[i]<='9') isk=1; res=res*10+(s[i]-'0'); i++; } return res; } int find(str_dz dz){ for(int i=0;i<tot;i++){ if(v1[i].a==dz.a&&v1[i].b==dz.b&&v1[i].c==dz.c&&v1[i].d==dz.d&&v1[i].e==dz.e){ return f[i]; } } return -1; } int main(){ cin >> n; for(int i=1;i<=n;i++){ cin >> s2 >> s; isf=0; int j=0,dz[5]; for(int k=0;k<5;k++){ dz[k]=read(j,s); if(k<4){ if(s[j]!=str_g[k]) isf=1; } if(dz[k]>str_s[k]) isf=1; j++; } str_dz str; str.a=dz[0],str.b=dz[1],str.c=dz[2],str.d=dz[3],str.e=dz[4]; if(isf==1){ cout << "ERR\n"; continue; } if(s2[0]=='S'){ if(find(str)!=-1){ cout << "FAIL\n"; }else{ v1.push_back(str); f.push_back(i); tot++; cout << "OK\n"; } }else{ int m=find(str); if(m==-1){ cout << "FAIL\n"; }else{ cout << m << endl; } } } return 0; }

求助!求助!求助!
2023/10/17 20:28
加载中...