20170812(互動題)
阿新 • • 發佈:2018-12-24
互動
題意
題意是用你的程式來詢問電腦,a是不是在b的前面,是的話電腦會輸入一個”YES”,否則輸出”NO”,讓你給出可能的序列
第一次做互動題,沒有經驗
解決
參考部落格
利用stable_sort
的歸併排序
stable_sort
- 穩定排序,對於兩個相同的元素,不改變原來的位置
- 一般情況下該函式採用歸併排序,在空間不足的情況下,會退化成就地排序,時間複雜度O(n*logn*logn)
- 時間複雜度穩定在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;
}