反等差數列Time Limit:1000ms Memory Limit:65535KB Special Judge Description用1到n這n個整數排成一個數列{ai},使得數列中不含等差數列。{ai}中含等差數列就是指存在3個下標i, j, k(i < j < k)使得。
資料限制:3<=n<=200。Input僅包含一個數NOutput僅一行, 為滿足條件的數列,相鄰兩數用空格分開, 如果有多解, 你只要輸出其中任何一種Sample Input
5
Sample Output
4 2 1 5 3
Hint#include<iostream><br />using namespace std;</p><p>int a[210],b[210];<br />void f(int start, int end)<br />{<br />int n = end - start + 1;<br />if(n <= 2)<br />return;<br />int i;<br />for(i=1; i<=n; i++)<br />b[i]=a[i-1+start];<br />for(i=1; 2*i-1<=n; i++)<br />a[i-1+start]=b[2*i-1];<br />for(i=1; 2*i<=n; i++)<br />a[i-1+start+(n+1)/2]=b[2*i];</p><p>f(start, start+(n+1)/2-1);<br />f(start+(n+1)/2, end);<br />}<br />int main()<br />{<br />int i,j,k;<br />int n;<br />while(cin>>n)<br />{<br />for(i=1; i<=n; i++)<br />a[i]=i;</p><p>f(1,n);<br />for(i=1; i<=n; i++)<br />cout<<a[i]<<' ';<br />cout<<endl;<br />}<br />//system("pause");<br />return 0;<br />}