您的位置:首页 > 其它

Codeforces 44I Toys (构造)

2016-04-01 16:39 471 查看
#include <bits/stdc++.h>
using namespace std;

#define N 122
#define mod 1000000007
#define vvi vector<vector<int> >
#define vi vector<int>
#define pb push_back

int n;
int p
;
bool vis[12];

void output(vi &s) {
memset(vis, 0, sizeof vis);
bool fst = 1;
while(1) {
int u = -1;
for(int i = 0; i < s.size(); ++i) {
if(!vis[s[i]]) {
u = s[i];
vis[s[i]] = 1;
break;
}
}
if(u == -1) break;
vi t;
for(int i = 0; i < s.size(); ++i) {
if(s[i] == u) t.pb(i + 1);
}
if(fst) fst = 0;
else putchar(',');
printf("{");

for(int i = 0; i < t.size(); ++i) {
printf("%d%c", t[i], i == t.size() - 1? '}': ',');
}
}
puts("");
}

int main() {
scanf("%d", &n);
vvi x;
vi t;
t.pb(0);
x.pb(t);
for(int i = 2; i <= n; ++i) {
vvi y;
for(int j = 0; j < x.size(); ++j) {
int mx = 0;
for(int k = 0; k < x[j].size(); ++k) {

mx = max(mx, x[j][k]);
}
mx++;
if(j % 2 == 0) {
vi t = x[j];
t.pb(0);
y.pb(t);
for(int k = mx; k >= 1; --k) {
t = x[j];
t.pb(k);
y.pb(t);
}
}
else {
vi t = x[j];
for(int k = 1; k <= mx; ++k) {
t = x[j];
t.pb(k);
y.pb(t);
}
t = x[j]; t.pb(0);
y.pb(t);
}
}
x = y;
}
printf("%d\n", (int)x.size());
for(int i = 0; i < x.size(); ++i) {
output(x[i]);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: