B3958求调
  • 板块灌水区
  • 楼主yyc_0124
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/8/31 16:06
  • 上次更新2024/8/31 19:34:46
查看原帖
B3958求调
1126838
yyc_0124楼主2024/8/31 16:06

我同学做题时

#include<bits/stdc++.h>
using namespace std;
int t,la,lb;
string a,b;
bool check(){
	bool f=0;
	if(abs(la-lb)>1)return 0;
	for(int i=0;i<min(la,lb);i++){
		if(la!=lb&&a[i]!=b[i])
			if(a[i+1]!=b[i]&&a[i]!=b[i+1])return 0;
		if(f==1&&a[i]!=b[i])return 0;
		if(a[i]!=b[i])f=1;
	}
	return 1;
}
int main(){
	ios::sync_with_stdio(0);
	cin>>t;
	while(t--){
		cin>>a>>b;
		la=a.size(),lb=b.size();
		if(check())cout<<"similar\n";
		else cout<<"not similar\n";
	}
	return 0;
}

因勤学好问,不愿重构 于是找我帮忙

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int n;
signed main(){
	cin >> n;
	while (n--){
		string a , b;
		cin >> a >> b;
		int la = a.size();
		int lb = b.size();
		if (la < lb){
			swap(a , b);
			swap(la , lb);
		}
		if (abs(la - lb) > 1){
			cout << "not similar" << endl;
			continue;
		}
		else if (abs(la - lb) == 1){
			int f = 0;
			int ans = 0;
			for (int i = 0 ; i < lb ; i++){
				if(a[i] != b[i]){
					ans = 1;
				}
				if (ans && a[i + 1] != b[i]){
					cout << "not similar" << endl;
					f = 1;
					break;
				}
			}
			if (!f){
				cout << "similar" << endl;
			}
		}
		else if (la == lb){
			bool ans = 0;
			bool f = 0;
			for (int i = 0 ; i < lb ; i++){
				if (a[i] != b[i]){
					if (ans){
						f = 1;
						cout << "not similar" << endl;
						break;
					}
					else {
						ans = 1;
					}
				}
			}
			if (!f){
				cout << "similar" << endl;
			}
		}
	}
	return 0;
}

然后我ac了... 由于ta只让我改check里的内容,

并且要像ta一样的结构!

走投无路向大家发问

2024/8/31 16:06
加载中...