20170812(交互题)

交互

题意

题意是用你的程序来询问电脑,a是不是在b的前面,是的话电脑会输入一个”YES”,否则输出”NO”,让你给出可能的序列
第一次做交互题,没有经验

解决

参考博客
利用stable_sort的归并排序

stable_sort

  1. 稳定排序,对于两个相同的元素,不改变原来的位置
  2. 一般情况下该函数采用归并排序,在空间不足的情况下,会退化成就地排序,时间复杂度O(n*logn*logn)
  3. 时间复杂度稳定在O(nlogn)
#include
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;
}

%>_<%今天没有总结下什么东西,惭愧

你可能感兴趣的:(2017成长点滴)