UVA 1326 B - Jurassic Remains——暴力
2017-10-11 22:37
991 查看
不用位运算会超时
#include <cstdio>
using namespace std;
int main() {
char str[30];
int n, a[30], cnt, ans;
while (~scanf("%d", &n)) {
for (int i = 0; i < n; i++) {
scanf("%s", str);
a[i] = 0;
for (int j = 0; str[j]; j++) a[i] ^= (1<<(str[j] - 'A'));
}
cnt = ans = 0;
for (int i = 1; i < (1<<n); i++) {
int t = 0, c = 0;
for (int j = 0; j < n; j++) if (i & (1<<j)) t ^= a[j], c++;
if (t == 0 && c > cnt) {
cnt = c, ans = i;
}
}
int flag = 0;
printf("%d\n", cnt);
for (int i = 0; i < n; i++) {
if (ans & (1<<i)) {
if (flag++) printf(" ");
printf("%d", i + 1);
}
}
printf("\n");
}
}
#include <cstdio>
using namespace std;
int main() {
char str[30];
int n, a[30], cnt, ans;
while (~scanf("%d", &n)) {
for (int i = 0; i < n; i++) {
scanf("%s", str);
a[i] = 0;
for (int j = 0; str[j]; j++) a[i] ^= (1<<(str[j] - 'A'));
}
cnt = ans = 0;
for (int i = 1; i < (1<<n); i++) {
int t = 0, c = 0;
for (int j = 0; j < n; j++) if (i & (1<<j)) t ^= a[j], c++;
if (t == 0 && c > cnt) {
cnt = c, ans = i;
}
}
int flag = 0;
printf("%d\n", cnt);
for (int i = 0; i < n; i++) {
if (ans & (1<<i)) {
if (flag++) printf(" ");
printf("%d", i + 1);
}
}
printf("\n");
}
}
相关文章推荐
- uva 1326 - Jurassic Remains(暴力+位运算+中间相遇法)
- Uva 1326 - Jurassic Remains 中途相遇法
- UVA - 1326 Jurassic Remains (折半搜索)
- uva 1326 - Jurassic Remains
- UVA 1326 Jurassic Remains
- Uva 1326 - Jurassic Remains 中途相遇法
- UVa1326--Jurassic Remains(折半搜索)
- UVa 1326 Jurassic Remains 解题报告(Meet-in-the-Middle)
- UVa 1326 - Jurassic Remains(枚举子集+中途相遇法)
- UVA 1326 - Jurassic Remains(技巧枚举+位运算)
- uva1326 - Jurassic Remains 中途相遇法
- UVa 1326 - Jurassic Remains
- UVA 1326 Jurassic Remains 中途相遇法
- UVA 1326 Jurassic Remains
- UVA 1326 Jurssic Remains(位运算)
- [UVA-1326] (暴力+位运算+中间相遇法)
- 【UVALive】2965 Jurassic Remains 中途相遇法
- 例题1.25 侏罗纪 Jurassic Remains UVALive - 2965 状态压缩 + 中途相遇法
- uvalive2965Jurassic Remains
- Jurassic Remains UVALive - 2965(中途相遇法)