1. 程式人生 > >陣列中有n個數據,要將他們順序迴圈向後移k位,即前面的元素向後移k位

陣列中有n個數據,要將他們順序迴圈向後移k位,即前面的元素向後移k位

方法一:

#include <stdio.h>

#include <stdlib.h>
int main()
{


int k,i,n,a[100]={0},b[100]={0};
scanf("%d %d",&n,&k);
for(i=0;i<n;i++)
    scanf("%d",&a[i]);
for(i=0;i<n;i++)
    b[(k+i)%n]=a[i];
for(i=0;i<n;i++)
printf("%d ",b[i]);

}

/////////////////////////////////////

方法二:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a[100],b[100],i,j,n,k,temp;
    scanf("%d %d",&n,&k);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<k;i++){
    temp=a[n-1];
    for(j=n-1;j>0;j--)
    a[j]=a[j-1];
    a[0]=temp;
    }
    for(i=0;i<n;i++)
    printf("%d ",a[i]);

}

////////////////////////////////////////////

方法三

#include <stdio.h>
#include <stdlib.h>;
int ff(int a,int b)
{
    int i,t=1;
    for(i=2;i<=a&&i<=b;i++)
        if(a%i==0&&b%i==0)
    {
        t=t*i;
        a=a/i;
        b=b/i;
    }
    return t;//t為所求的最大公約數
}
int  main(){
    int a[100],b0,b1,i,j,n,k,m,tt;
    printf("input the number of data:");
    scanf("%d",&n);
    printf("input the distant of moving:");
    scanf("%d",&k);
    for(i=0;i<n;i++)
    scanf("%d",&a[i]);
    m=ff(n,k);
    for(j=0;j<m;j++)
    {
        b0=a[j];
        tt=j;
        for(i=0;i<n/m;i++)
        {
            tt=(tt+k)%n;
            b1=a[tt];
            a[tt]=b0;
            b0=b1;
        }
    }
        for(i=0;i<n;i++)
            printf("%d ",a[i]);
}





相關推薦

陣列n個數他們順序迴圈後移k前面元素後移k

方法一:#include <stdio.h>#include <stdlib.h>int main(){int k,i,n,a[100]={0},b[100]={0};scanf("%d %d",&n,&k);for(i=0;i<

陣列n個數多少種組合

private void mergeSort() { // int[] aa = {3, 5, 7, 9, 8, 4, 6, 1, 2}; // merge(aa, 0, aa.length-1); // for (int i=0;i<aa.

陣列個數只出現一次其它的數恰好出現兩次找出這三個數

具體的題意如題 當我第一次碰到這類題的時候是宿舍的舍友分享的,當時他說的問題還要簡單一些,具體的題意是"陣列中只有一個數只出現一次,其它的數恰好出現兩次,找出這個數。"  當時我的第一感覺就是要用到快排,因此得出第一種演算法,將陣列進行快排的第一層排序,然後從中間分開,數字

遞迴:從陣列n個數多少種組合。

還是在學習遞迴。 看別人的部落格自己學習了之後,來寫一下自己的理解吧。 首先這道題目是說,有一個數組,例如arr={1,2,3,4,5,6},給定一個n<=arr_len,例如給定4,問:從陣列中取4個數一共有多少種組合方式? 這個在數學上是排列組合

陣列任意n個數的全排列(DFS)以及任意n個數的組合

        今天做了poj1270這道題,採用了深度優先搜尋,確實啟發了我,無意中想了一個這麼一個問題:求陣列中任意n個數的全排列是不是也可以用深度優先去搜索(我理解這是一種深度搜索,不知道對不對)。 程式碼如下: #include<iostream> #i

Java中將byte陣列的4個數轉成int

public static int getIntFromBytes(byte high_h, byte high_l, byte low_h, byte low_l) { return

n個整數使前面各數順序後移m個位置最後m個數變成前面m個數。寫一函式:實現以上功能在主函式輸入n個數和輸出調整後的n個數

import java.util.Scanner; public class Main {     public static void main(String[] args){         Scanner sc = new Scann

給定一個正整數n求出0到n個數滿足其二進位制表示不包含連續的1

樣例: 輸入:5 輸出:5 0 01 10 100 101滿足,11不滿足。 那麼6144呢? 答案是610,怎麼去計算呢? 思路:查詢從0到n中有多少個數包含連續的1,然後在總數中去掉這些情況,得到

建立一個數陣列三個物件

json.html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>建立一個json格式陣列,

ACMNO.41C語言-數字調序 n個整數使前面各數順序後移m個位置最後m個數變成前面m個數見圖。寫一函式:實現以上功能在主函式輸入n個數和輸出調整後的n個數

題目描述 有n個整數,使前面各數順序向後移m個位置,最後m個數變成前面m個數,見圖。 寫一函式:實現以上功能,在主函式中輸入n個數和輸出調整後的n個數。 輸入 輸入資料的個數n n個整數 移動的位置m 輸出 移動後的n個數 樣例輸入 10 1 2 3 4

彙編基礎練習題14: 編寫排序子程式把資料區N個數進行排序(資料區可能多個類似13題a1的變數:a2a3。。。那麼該子程式應該幾個入口引數?)然後在主程式驗證。

彙編基礎練習題14: 編寫排序子程式,把資料區中的N個數進行排序(資料區中可能有多個類似13題中a1的變數:a2,a3。。。那麼該子程式應該有幾個入口引數?),然後在主程式中驗證。 編譯工具:Masm for Windows 整合實驗環境2012.5 (附帶一個工具下載地址https

上千萬或上億資料(重複)統計其中出現次數最多的N個數. C++實現

上千萬或上億的資料,現在的機器的記憶體應該能存下。所以考慮採用hash_map/搜尋二叉樹/紅黑樹等來進行統計次數。然後就是取出前N個出現次數最多的資料了,可以用第2題提到的堆機制完成。 #in

N個數從每個陣列取出一個數組成一個序列輸出所有可能的情況

這個問題是在xx公司的筆試題上遇到的,當時沒有做出來,下來的時候研究了一下這個題。發現這個問題需要用遞迴的方法去求解這個問題。 程式碼如下: import java.util.ArrayList; import java.util.List; public class So

給定一個數陣列求出連續陣列中和值最大的數(陣列長度大於等於1)

刷牛牛客遇到的題,想給出完整而又簡潔的function(python解答,但是關鍵是思想,語言不是問題啦)1.給定一個數組,陣列中有正有負,求出連續(全部都是正的時候,所有值累加就是最大值)(全部為負的時候,max(array)就是我們想要的)# -*- coding:utf

給定一個數陣列正負數求出所有字陣列中和值最大的值。

/**當我們加上一個正數時,和會增加;當我們加上一個負數時,和會減少。如果當前得到的和是個負數,那麼這個和在接下來的累加中應該拋棄並重新清零, 不然的話這個負數將會減少接下來的和 */ public static int maxSum(int[] a) { int

陣列分割:陣列大於某個數元素被分為一類小於等於某個數元素被分為另一類

#include<stdio.h> #define MAX 100000 int A[MAX],n; int partition(int p,int r){ int x,i,j,t; x= A[r]; i = p-1; for(j=p;j<r;j++){ if(A[

C:numberNMax 陣列n大數的下標方法比較笨應用二級指標

//求陣列中第n大數的下標 int * numberNMax(int * array, int size, int n) { if (NULL==array) { printf("Pointer is NULL\n"); exit(EXIT_FAILURE);

【資料結構】【面試題】找N個數最大的K個數

    如果不限定條件的話,這個問題還是很好解決的,但是當我們要求時間複雜度為O(N),空間複雜度為O(1)時,問題就沒那麼好解決了。    簡單的思路就是,建立一個大小為K=100的小堆,調整好,然後

JS 陣列 undefined 值用 for 迴圈和 for…in 迴圈遍歷的不同之處

先說結論:在陣列遍歷時一般最好使用for迴圈遍歷 var arr=new Array(); arr[0]="P90"; arr[3]="AWM"; arr[5]="AK47"; console.log("//for 迴圈遍歷"); for(let i=0;i<arr

陣列兩個出現一次的數字其他數字都出現兩次找出這兩個數字

public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) { int length=array.length; if(length==2){