记录编号 399216 评测结果 RRRRRR
题目名称 加法问题 最终得分 0
用户昵称 Gravatar超级傲娇的AC酱 是否通过 未通过
代码语言 C++ 运行时间 0.009 s
提交时间 2017-04-25 20:19:21 内存使用 4.15 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cmath>
#include<vector>
using namespace std;
int D=0,n,dp[1002][1002];
string A,B;
bool dfs(int,int,int,int);
int main()
{
	freopen("card_.in","r",stdin);
	freopen("card_.out","w",stdout);
	cin>>n;
	cin>>A;
	cin>>B;
	cout<<(dfs(0,0,0,0)?"Accepted!":"Impossible!");
	return 0;
}
bool dfs(int a,int b,int n0,int n1)
{
	if(a>=A.length()||b>=B.length())
		return true;
	if(abs(n0-n1)>1)
		return false;
	if(!dp[a][b])dp[a][b]=true;
	else
		return false;
	bool flag=false;
	/*
	if(A[a]=='0')
		flag|=dfs(a+1,b,n0+1,n1);
	if(A[a]=='1')
		flag|=dfs(a+1,b,n0,n1+1);
	if(B[b]=='0')
		flag|=dfs(a,b+1,n0+1,n1);
	if(B[b]=='1')
		flag|=dfs(a,b+1,n0,n1+1);
	*/
	if(A[a]=='0')
		if(dfs(a+1,b,n0+1,n1))
			return true;
	if(A[a]=='1')
		if(flag|=dfs(a+1,b,n0,n1+1))
			return true;
	if(B[b]=='0')
		if(dfs(a,b+1,n0+1,n1))
			return true;
	if(B[b]=='1')
		if(dfs(a,b+1,n0,n1+1))
			return true;
	return false;
}