UVA 11129 - An antiarithmetic permutation
2012-02-01 14:09
429 查看
一个整数n,求它的一个序列,这个序列的要求是其中任何一个子序列都不能是等差序列。枚举必
然超时,然后想了半个小时没有任何想法,就参考了七里 大神的思路,用分治法将序列中处于奇
偶位置的数字分组,开始分出来的是等差2的序列,然后再在奇偶序列中分组,最终得出的序列就
是符合要求的序列中的一个。暂时没有更好的想法。
然超时,然后想了半个小时没有任何想法,就参考了七里 大神的思路,用分治法将序列中处于奇
偶位置的数字分组,开始分出来的是等差2的序列,然后再在奇偶序列中分组,最终得出的序列就
是符合要求的序列中的一个。暂时没有更好的想法。
#include<cstdio> #include<cstring> #include<cstdlib> #define MAXN 10010 int a[MAXN], b[MAXN]; int n; void dvide( int x, int y) { int i, j; if( y - x <= 1) return; for( int i = x; i <= y; i ++) b[i] = a[i]; for( i = x, j = x; j <= y; j += 2, i ++)//最终i = mid a[i] = b[j]; for( j = x + 1; j <= y; j += 2, i ++) //最终 i = y a[i] = b[j]; dvide((x + y) / 2 + 1, y); dvide( x, (x + y) / 2); } int main() { while( scanf( "%d", &n), n) { for( int i = 0; i < n; i ++) a[i] = i; dvide( 0, n - 1); printf( "%d:", n); for( int i = 0; i < n; i ++) printf( " %d", a[i]); printf( "\n"); } return 0; }
相关文章推荐
- uva11129 An antiarithmetic permutation
- uva - 11129 - An antiarithmetic permutation(分治)
- uva11129 - An antiarithmetic permutation(不等差序列,分治法)
- uva 11129 An antiarithmetic permutation
- An antiarithmetic permutation UVA, 11129
- uva11129 - 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
- 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