20170812(交互题)

来源:互联网 发布:b2c商城网站源码下载 编辑:程序博客网 时间:2024/06/05 09:47

交互

题意

题意是用你的程序来询问电脑,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;}

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

原创粉丝点击