pat1089 Insert or Merge
2015-02-26 17:24
302 查看
#include<algorithm> #include<cstdio> #include<iostream> #include<string> #include<cstring> #include<vector> #include<set> #include<map> #include<queue> #include<stack> #include<climits> #define eps 1e-9 #define ll long long using namespace std; int a[105],b[105],c[105]; int n; int ok1() { for(int i = 0;i<n;i++)if(a[i]!=c[i])return 0; return 1; } int ok2() { for(int i = 0;i<n;i++)if(b[i]!=c[i])return 0; return 1; } void insert(int x) { while(x>0&&a[x]<a[x-1]) { swap(a[x],a[x-1]); x--; } } void merge(int x) { for(int i = 0;i<n;i+=x) sort(b+i,b+i+min(x,n-i)); } int main() { int i,j,x; while(cin>>n) { for(i = 0;i<n;i++)cin>>a[i]; for(i = 0;i<n;i++)b[i] = a[i]; for(i = 0;i<n;i++)cin>>c[i]; int f = 0; for(i = 1;i<n;i++) { insert(i); merge((int)pow(2,i)); if(ok1()) { cout<<"Insertion Sort"<<endl; insert(min(i+1,n-1)); for(j = 0;j<n-1;j++)cout<<a[j]<<" "; cout<<a[n-1]; break; } if(ok2()) { cout<<"Merge Sort"<<endl; merge((int)pow(2,i+1)); for(j = 0;j<n-1;j++)cout<<b[j]<<" "; cout<<b[n-1]; break; } } } return 0; }
相关文章推荐
- PAT (Advanced Level) Practise 1089 Insert or Merge (25)
- pat 1089 Insert or Merge
- PAT (Advanced Level) Practise 1089 Insert or Merge (25)
- PAT A1089 insert or merge (25)
- PAT 数据结构 07-排序2. Insert or Merge (25)
- PAT 1061 Insert or Merge (25)
- 1089. Insert or Merge
- 1089.Insert or Merge
- 1089. Insert or Merge (25)
- 1089. Insert or Merge
- 1089. Insert or Merge (25)
- 浙大pat | 浙大pat 牛客网甲级1061 Insert or Merge (25)判断是插入排序还是归并排序
- 1089. Insert or Merge
- 1089 Insert or Merge
- 09-排序2 Insert or Merge
- A soulation for loss the PageSetUp porperty after InsertFile or merge two files in Interp.Word
- 中国大学MOOC-陈越、何钦铭-数据结构 Insert or Merge
- 中国大学MOOC-数据结构基础习题集、07-2、Insert or Merge
- 09-排序2 Insert or Merge
- 07-排序2. Insert or Merge (25)