记录编号 |
399216 |
评测结果 |
RRRRRR |
题目名称 |
加法问题 |
最终得分 |
0 |
用户昵称 |
超级傲娇的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;
}