1 条题解
-
0
C++ :
#include <cstdio> static char vis[1 << 15]; static char pat[64]; int main(){ int m, n; if(scanf("%d %d", &m, &n) != 2) return 0; for(int t = 0; t < n; t++){ if(scanf("%s", pat) != 1) break; int mask = 0, base = 0; for(int j = 0; j < m; j++){ if(pat[j] == '*') mask |= 1 << j; else if(pat[j] == '1') base |= 1 << j; } int sub = mask; while(1){ vis[base | sub] = 1; if(sub == 0) break; sub = (sub - 1) & mask; } } int cnt = 0; for(int i = 0; i < (1 << m); i++) if(vis[i]) cnt++; printf("%d\n", cnt); return 0; }
- 1
信息
- ID
- 2830
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者