翻转矩阵(数组右移问题)
生活随笔
收集整理的這篇文章主要介紹了
翻转矩阵(数组右移问题)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
之前寫過,近些天又看到了幾個新解法。
?
?方法一(C語言寫):
思路,一次向右移動一位,此過程總共循環M次
#include <stdio.h>
int main(){int n,m,i,number,t;scanf("%d %d",&n,&m);int num[n];//遍歷輸入數組for(i=0;i<n;i++){scanf("%d",&number);num[i]=number;}//持續M次while(m--){t=num[n-1];//先把最后一個數組元素存起來for(i=n-2;i>=0;i--){num[i+1]=num[i];//右移一個單位}num[0]=t;//第一個元素為 之前存的最后一個數組元素}//遍歷輸出for(i=0;i<n;i++){if(i!=n-1){printf("%d ",num[i]);}else{printf("%d",num[i]);}}return 0;
}
方法二(C++)
我們先認識一個函數reverse( )
reverse函數功能是逆序(或反轉),頭文件是#include <algorithm>
reverse函數用于反轉在[first,last)范圍內的順序(包括first指向的元素,不包括last指向的元素),reverse函數無返回值
舉個例子
#include <iostream>
#include <algorithm>
using namespace std;
int main(){int a[6]={0,1,2,3,4,5};reverse(a,a+6);for(int i=0;i<6;i++){cout <<a[i]<<' ';}return 0;
} 輸出:5 4 3 2 1 0
?
#include <iostream>
#include <algorithm>
using namespace std;
int main(){int n,m,i;cin >>n>>m;int num[n];for(i=0;i<n;i++){cin >>num[i];}//遍歷輸入int remove=m%n;//考慮m>=n的情況reverse(num,num+n-remove);//翻轉reverse(num+n-remove,num+n);reverse(num,num+n);for(i=0;i<n;i++){//遍歷輸出cout <<num[i];if(i!=n-1){cout <<' ';}}return 0;
}
總結
以上是生活随笔為你收集整理的翻转矩阵(数组右移问题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个形容心情不好个性签名。
- 下一篇: 求技术大神解答朋友圈图片的疑问?[已扎口