題目鏈接在此。
雖然這個(gè)題目在題干中有非常多的限制,“不允許有額外數(shù)組”、“移動(dòng)次數(shù)最少”等等,但是PAT是一個(gè)黑盒測試,只需要結(jié)果正確,能過通過所有測試點(diǎn)即可。所以不需要被這些限制所限制,這里只寫出兩種方法, 一種是我自己的想法,用了“簡單模擬”的思想,即題目說“數(shù)組右移”,那么我就數(shù)組右移,故這種方法的關(guān)鍵就在如何右移數(shù)組;另外一種方法是《算法筆記》中的,這種方法更加直接,直接按照一定的規(guī)律輸出,甚是巧妙。
下面是我的代碼:
#include<stdio.h>int main(){ int N,M; int a[105]; scanf("%d %d",&N, &M); M = M % N; //題目并沒有保證M<N for( int i = 0 ; i < N; i++){ scanf("%d",a+i); } if(M == 0){ for(int i = 0 ; i < N; i++){ if( i == N-1){ 下面是《算法筆記》的代碼:#include<stdio.h>int main(){ int N,M; int a[105]; scanf("%d %d",&N,&M); M = M % N; for(int i = 0 ; i < N; i++){ scanf("%d",a+i); } int count = 0; //用來計(jì)數(shù),為"最后一個(gè)元素不輸出空格服務(wù)" for(int i = N-M; i < N; i++){ count++; printf("%d",a[i]); if(count < N){ printf(" "); } } for(int i = 0 ; i < N-M; i++){ count++; printf("%d",a[i]); if(count < N){ printf(" "); } } return 0;}這個(gè)方法就是找到了元素輸出的規(guī)律,然后代碼實(shí)現(xiàn)之。《算法筆記》購買地址。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注