当前位置: 代码迷 >> 综合 >> PAT 甲级 1089 PAT Ranking 个人错误总结
  详细解决方案

PAT 甲级 1089 PAT Ranking 个人错误总结

热度:44   发布时间:2024-01-28 02:44:00.0

这个题,错误在一个点,就是对于4 3 4 2 1 3 4 2 1的输入的处理,如果是2 3 4 1才是正确的,我i的初值赋值错了。
ac代码

#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
int a[100]={};
int b[100]={};
int c[100]={};
int ans[100]={};
int main(){int n;scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&a[i]);b[i]=a[i];c[i]=a[i];	} for(int i=0;i<n;i++){scanf("%d",&ans[i]);} //charufor(int i=2;i<n;i++){sort(b,b+i);for(int j=0;j<n;j++){if(b[j]!=ans[j]) break;else if(j==n-1){printf("Insertion Sort\n");sort(b,b+i+1);for(int k=0;k<n;k++){printf("%d",b[k]);if(k!=n-1) printf(" ");}return 0;}}}for(int i=2;i<n;i*=2){int step=0;while(step+i<n){sort(c+step,c+step+i);step+=i;}sort(c+step,c+n);for(int j=0;j<n;j++){if(c[j]!=ans[j]) break;else if(j==n-1){printf("Merge Sort\n");i=i*2;step=0;while(step+i<n){sort(c+step,c+step+i);step+=i;}sort(c+step,c+n);for(int k=0;k<n;k++){printf("%d",c[k]);if(k!=n-1) printf(" ");}return 0;}}}return 0;
}
  相关解决方案