Debug失败ing……
查看原帖
Debug失败ing……
1050349
wntt楼主2024/9/17 13:18

样例过了,但是提交上去一个没过

求大佬帮忙解答一下

代码如下:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	//输入数据
	int t;
	cin >> t;
	/*
	各组数据计算结果
	  1:相似
	  0:不相似
	*/
	int out[t] = {0};

	for (int i = 0; i < t; i++) {
		string a, b;
		cin >> a >> b;

		//判断两个字符串是不是直接相同
		if (a == b) {
			out[i] = 1;
		}
		//如果a比b短
		else if (a.size() < b.size()) {
			//则如果a比b短了超过一个字符就失败
			if (b.size() - a.size() > 1) {
				out[i] = 0;
			}
			//如果a只是比b少了一个字符
			else {
				bool fail = true;

				//则循环找出
				for (int j = 0; j < b.size(); j++) {
					string temp = b;
					temp.erase(j, 1);

					if (temp == a) {
						out[i] = 1;
						fail = false;
					}
				}

				//如果无法匹配,那么失败
				if (fail) {
					out[i] = 0;
				}
			}
		}
		//22-46,但是a和b反过来
		else if (b.size() < a.size()) {
			if (a.size() - b.size() > 1) {
				out[i] = 0;
			}
			else {
				bool fail = true;

				for (int j = 0; j < b.size(); j++) {
					string temp = a;
					temp.erase(j, 1);

					if (temp == b) {
						out[i] = 1;
						fail = false;
					}
				}

				if (fail) {
					out[i] = 0;
				}
			}
		}
		//如果ab一样长
		else {
			int nsim = 0;

			//循环找不同
			for (int j = 0; j < a.size(); j++) {
				if (a[j] != b[j]) {
					nsim++;
				}
			}

			//如果只有一个不同,那么判定相似
			if (nsim == 1) {
				out[i] = 1;
			}
			//否则不相似
			else {
				out[i] = 0;
			}
		}
	}

	//输出
	for (int i = 0; i < t; i++) {
		if (out[i] == 1) {
			cout << "similar" << endl;
		}
		else {
			cout << "not similar" << endl;
		}
	}

	return 0;
}
2024/9/17 13:18
加载中...