uva11129

来源:互联网 发布:手机硬件信息软件 编辑:程序博客网 时间:2024/06/05 03:46

思路:分治。

// #pragma comment(linker, "/STACK:1024000000,1024000000")#include <iostream>#include <algorithm>#include <iomanip>#include <sstream>#include <string>#include <stack>#include <queue>#include <deque>#include <vector>#include <map>#include <set>#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <limits.h>using namespace std;typedef long long LL;typedef unsigned long long ULL;typedef pair<int,int> ii;const int inf = 1 << 30;const int INF = 0x3f3f3f3f;const int MOD = 1e9 + 7;int n,arr[10010];void solve(int begin,int end){if (begin == end) return ;int tmp[10010],pos = begin;memcpy(tmp, arr,sizeof arr);for (int i = begin;i <= end;i += 2)arr[pos++] = tmp[i];for (int i = begin + 1;i <= end;i += 2)arr[pos++] = tmp[i];solve(begin, (begin + end)/2);solve((begin + end)/2 + 1,end);}void output(){printf("%d:",n);for (int i = 0;i < n;i++)printf(" %d",arr[i]);printf("\n");}int main(){// freopen("in.txt","r",stdin);// freopen("out.txt","w",stdout);while(scanf("%d",&n) && n){for(int i=0;i<n;i++)arr[i]=i;solve(0,n-1);output();}return 0;}


0 0
原创粉丝点击