#include <cstdio>
#include <algorithm>
int d[10];
// lexicographical_order: 11.888 ms
void lexicographical_order(const int size)
{
int tot = 1, i, j;
for (i = 0; i < size; i++) d[i] = i+1, tot *= i+1;
// for (i = 0; i < size; i++) printf("%d%c", d[i], i==size-1?'\n':' ');
while (--tot)
{
i = size - 2;
while (d[i] > d[i+1]) i--;
j = size - 1;
while (j != i) {
if (d[j] > d[i]) {
std::swap(d[j], d[i]);
break;
} else j--;
}
i++;
j = size - 1;
while (i < j) {
std::swap(d[i], d[j]);
i++; j--;
}
// for (i = 0; i < size; i++) printf("%d%c", d[i], i==size-1?'\n':' ');
}
}
// incremental_way: 87.111 ms
void incremental_way(const int size)
{
int p[10], tot = 1, i, j, k, l;
for (i = 0; i < size; i++) d[i] = i+1, tot *= i+1, p[i] = tot;
tot = 0;
// for (i = 0; i < size; i++) printf("%d%c", d[i], i==size-1?'\n':' ');
while (++tot < p[size-1])
{
i = 0;
while (tot % p[i+1] == 0) i++;
j = 0;
k = 0;
for (j = 0; j < size; j++) {
if (d[j] <= i+1) {
d[j] = i+2 - d[j];
k = j;
} else if (d[j] == i+2) {
std::swap(d[j], d[k]);
}
}
// for (i = 0; i < size; i++) printf("%d%c", d[i], i==size-1?'\n':' ');
}
}
// decremental_way: 5.057 ms
void decremental_way(const int size)
{
int tot = 1, i, j, k, l;
for (i = 0; i < size; i++) d[i] = i+1, tot *= i+1;
k = size - 1;
// for (i = 0; i < size; i++) printf("%d%c", d[i], i==size-1?'\n':' ');
while (--tot)
{
i = 0; while (d[i] + i == size) i++;
if (i) {
j = i; while (j < size) {
if (d[j] == size-i) d[j-i] = d[j-i-1], d[j-i-1] = d[j]; else d[j-i] = d[j];
j++;
}
j = i; while (j) d[size-j] = size-j+1, j--;
k = size - 1;
} else {
l = d[k], d[k] = d[k-1], d[k-1] = l;
// std::swap(d[k], d[k-1]);
k--;
}
// for (i = 0; i < size; i++) printf("%d%c", d[i], i==size-1?'\n':' ');
}
}
int main()
{
// lexicographical_order(10);
// incremental_way(10);
decremental_way(10);
return 0;
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Testcase #1 | 5.123 ms | 8 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #2 | 5.136 ms | 8 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #3 | 5.124 ms | 8 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #4 | 5.061 ms | 8 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #5 | 5.046 ms | 8 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #6 | 5.062 ms | 8 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #7 | 5.122 ms | 8 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #8 | 5.059 ms | 8 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #9 | 5.123 ms | 8 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #10 | 5.134 ms | 8 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #11 | 5.122 ms | 8 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #12 | 5.126 ms | 8 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #13 | 5.046 ms | 8 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #14 | 5.131 ms | 8 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #15 | 5.125 ms | 8 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #16 | 5.136 ms | 8 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #17 | 5.045 ms | 8 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #18 | 5.062 ms | 8 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #19 | 5.122 ms | 8 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #20 | 5.13 ms | 8 KB | Wrong Answer | Score: 0 | 显示更多 |