有疑问:
这个在dev C++中编译不会出问题,但是在pat里会报编译错误:
a.cpp:17:25: error: ‘int index’ redeclared as different kind of symbol int seq[maxn],CBT[maxn],index=0; ^~~~~ In file included from /usr/include/c++/6/cstring:42:0, from a.cpp:4: /usr/include/string.h:477:1: note: previous declaration ‘const char* index(const char*, int)’ index (const char *__s, int __c) __THROW ^~~~~
#include<cstdio> #include<stdlib.h> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<set> #include<vector> #include<map> #include<queue> #include<stack> #include<string> using namespace std; //A1064 const int maxn=1010; int seq[maxn],CBT[maxn],index=0; int n; //中序排列是有序的,按照中序遍历的顺序插入数组 void inOrder(int root){ if(root>n)return; inOrder(root*2); CBT[root]=seq[index++]; inOrder(root*2+1); } int main() { int data; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&seq[i]); } sort(seq,seq+n); //保证排列有序 inOrder(1); for(int i=1;i<=n;i++){ if(i!=1)printf(" "); printf("%d",CBT[i]); } return 0; }将index改成pos就好使了。。。???
#include<cstdio> #include<stdlib.h> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<set> #include<vector> #include<map> #include<queue> #include<stack> #include<string> using namespace std; //A1064 const int maxn=1010; int seq[maxn],CBT[maxn]; int pos; int n; //中序排列是有序的,按照中序遍历的顺序插入数组 void inOrder(int root){ if(root>n)return; inOrder(root*2); CBT[root]=seq[pos++]; inOrder(root*2+1); } int main() { int data; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&seq[i]); } sort(seq,seq+n); //保证排列有序 pos=0; inOrder(1); for(int i=1;i<=n;i++){ if(i!=1)printf(" "); printf("%d",CBT[i]); } return 0; }