http://magic.vicp.io/JudgeOnline/problem.php?cid=1349&pid=3
#include <bits/stdc++.h>
using namespace std
;
char a
[2600][20];
string s
;
set
<string
> t
;
int m
,n
;
void dfs(int i
,int dep
)
{
if (dep
>m
)
t
.insert(s
);
else
{
if (s
[dep
-1]=='*')
{
s
[dep
-1]='0';
dfs(i
,dep
+1);
s
[dep
-1]='1';
dfs(i
,dep
+1);
s
[dep
-1]='*';
}
else
dfs(i
,dep
+1);
}
}
int main()
{
scanf("%d%d",&m
,&n
);getchar();
for (int i
=1;i
<=n
;i
++)
{
for (int j
=1;j
<=m
;j
++)
a
[i
][j
]=getchar();
getchar();
}
t
.clear();
for (int i
=1;i
<=n
;i
++)
{
s
="";
for (int j
=1;j
<=m
;j
++)
s
+=a
[i
][j
];
dfs(i
,1);
}
printf("%d\n",t
.size());
return 0;
}
转载请注明原文地址: https://www.6miu.com/read-5038136.html