1. 程式人生 > >20170812(互動題)

20170812(互動題)

互動

題意

題意是用你的程式來詢問電腦,a是不是在b的前面,是的話電腦會輸入一個”YES”,否則輸出”NO”,讓你給出可能的序列
第一次做互動題,沒有經驗

解決

參考部落格
利用stable_sort的歸併排序

stable_sort

  1. 穩定排序,對於兩個相同的元素,不改變原來的位置
  2. 一般情況下該函式採用歸併排序,在空間不足的情況下,會退化成就地排序,時間複雜度O(n*logn*logn)
  3. 時間複雜度穩定在O(nlogn)
#include<bits/stdc++.h>
using namespace std;

int num[10005];

bool cmp(int
a,int b) { string s; printf("1 %d %d\n",a,b); cin>>s; if(s=="YES") return true; else return false; } int main() { int n; scanf("%d",&n); fflush(stdout); //重新整理輸出緩衝區,將緩衝區的東西輸出到螢幕上 for(int i=1;i<=n;i++) num[i]=i; stable_sort(num+1,num+1+n,cmp); for
(int i=0;i<=n;i++) printf("%d%c",num[i],i==n?'\n':' '); return 0; }

%>_<%今天沒有總結下什麼東西,慚愧