今天在做PAT题时,有一道是这样的
基本方法,就是用链表做,和用数组做呗,习惯性的先用数组做了,结果出了问题
1 #include <iostream> 2 #include <string.h> 3 using namespace std; 4 5 int main() 6 { 7 int count, renum; 8 string add; 9 cin>>add>>count>>renum; 10 string add1[count],add2[count],madd1[count],madd2[count]; 11 int mnum[count],num[count]; 12 for(int i=0;i<count;i++) 13 { 14 cin>>add1[i]>>num[i]>>add2[i]; 15 } 16 for(int i=0;i<count;i++) 17 { 18 19 for(int j=0;j<count;j++) 20 { 21 if(add1[j]==add) 22 { 23 madd1[i] = add1[j]; 24 mnum[i]=num[j]; 25 madd2[i] = add2[j]; 26 add=madd2[i]; 27 break; 28 } 29 } 30 } 31 int temp=0; 32 int fake = count; 33 while(count-renum>=0) 34 { 35 for(int i= temp,j=temp+renum-1;i<=temp+renum-1;i++,j--) 36 { 37 add1[i] = madd1[j]; 38 num[i] = mnum[j]; 39 } 40 count-=renum; 41 temp=temp+renum; 42 } 43 for(int i=temp;i<fake;i++) 44 { 45 46 add1[i] = madd1[i]; 47 num[i] = mnum[i]; 48 } 49 for(int i=0;i<fake-1;i++) 50 { 51 add2[i]=add1[i+1]; 52 } 53 add2[fake-1] = "-1"; 54 for(int i=0;i<fake;i++) 55 { 56 cout<<add1[i]<<" "<<num[i]<<" "<<add2[i]<<endl; 57 } 58 return 0; 59 }
请无视我的变量命名习惯
结果是
运行超时我还可以理解,毕竟有可能到复杂度是o(n*n),我也会想办法解决。
可是,答案错误会是什么情况?是什么特殊情况我没考虑到么!请发现的人指教一下啊!!谢谢了!
以上