UVA - 11129 An antiarithmetic permutation
2014-10-21 23:02
344 查看
题目大意:给出一个数值 n, 要求用 0~n - 1 这 n 个数组成一个序列,使得这个序列的所有长度大于 2 的子序列都不是等差数列
解题思路:只要对序列按奇偶位置分成两个序列,然后对两个子序列同样进行分类,最后排出来的一定是非等差数列
#include <cstdio>
#include <cstring>
int n, A[10005], T[10005];
void deal(int left, int right) {
if (left == right)
return;
memcpy(T, A, sizeof(A));
int cnt = left;
for (int i = left; i <= right; i += 2)
A[cnt++] = T[i];
for (int i = left + 1; i <= right; i += 2)
A[cnt++] = T[i];
deal(left, (right + left)/2);
deal((right + left)/2 + 1, right);
}
int main() {
while (scanf("%d", &n), n) {
for (int i = 0; i < n; i++)
A[i] = i;
deal(0, n-1);
printf("%d:", n);
for (int i = 0; i < n; i++)
printf(" %d", A[i]);
printf("\n");
}
return 0;
}
解题思路:只要对序列按奇偶位置分成两个序列,然后对两个子序列同样进行分类,最后排出来的一定是非等差数列
#include <cstdio>
#include <cstring>
int n, A[10005], T[10005];
void deal(int left, int right) {
if (left == right)
return;
memcpy(T, A, sizeof(A));
int cnt = left;
for (int i = left; i <= right; i += 2)
A[cnt++] = T[i];
for (int i = left + 1; i <= right; i += 2)
A[cnt++] = T[i];
deal(left, (right + left)/2);
deal((right + left)/2 + 1, right);
}
int main() {
while (scanf("%d", &n), n) {
for (int i = 0; i < n; i++)
A[i] = i;
deal(0, n-1);
printf("%d:", n);
for (int i = 0; i < n; i++)
printf(" %d", A[i]);
printf("\n");
}
return 0;
}
相关文章推荐
- UVA-11129 - An antiarithmetic permutation (分治)
- UVA 11129 - An antiarithmetic permutation
- uva 11129 - An antiarithmetic permutation
- UVA 11129 An antiarithmetic permutation 非等差数列 贪心 递归
- UVa 11129 - An antiarithmetic permutation
- 【个人训练】(UVa11129)An antiarithmetic permutation
- UVA_11129_An antiarithmetic permutation
- uva:11129 - An antiarithmetic permutation(分治法)
- Uva11129-An Antiarithmetic Permutation
- UVa 11129 - An antiarithmetic permutation
- UVA 11129 An antiarithmetic permutation
- UVa 11129 - An antiarithmetic permutation
- uva 11129 - An antiarithmetic permutation
- uva 11129 - An antiarithmetic permutation
- UVa 11129 An antiarithmetic permutation (构造题&想法题&分治)
- [递归]UVA11129 An antiarithmetic permutation
- uva 11129 An antiarithmetic permutation
- uva 11129 - An antiarithmetic permutation(递归)
- uva11129 - An antiarithmetic permutation(不等差序列,分治法)
- uva 11129 An antiarithmetic permutation