Week12

轻松的一周,第一题是个二进制背包,或者用单调队列优化(虽然学过但是没想出来),第二题写得比较丑陋,第三题一眼出性质。

#include 
using namespace std;
string a_cg[2] = {"0","1"};
string b_cg[3] = {"0","1","2"};
string a,b;
long long calc(string s,int base){
	long long tmp = 0;
	for(int i = 0;i < s.length();i ++){
		tmp *= base;
		tmp = tmp + s[i] - '0';
	}
	return tmp;
}
bool check(int x,int y,string a1,string b1){
	for(int i = 0;i < 2;i ++)
		for(int j = 0;j < 3;j ++){
			string a2 = a1.replace(x,1,a_cg[i]);
			string b2 = b1.replace(y,1,b_cg[j]);
			a1 = a;
			b1 = b;
		//	cout << a1 << " " << b1 << endl;
			if(calc(a2,2) == calc(b2,3) && a2 != a && b2 != b){
				cout << calc(a2,2);
				return true;
			}
		}
	return false;
}
int main(){	
	cin >> a >> b;
	for(int i = 0;i < a.length();i ++)
		for(int j = 0;j < b.length();j ++)
			if(check(i,j,a,b)) break;
	return 0;
}

你可能感兴趣的:(大一算法学习,c++,算法,数据结构)