国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C++ > 正文

C++ 中約瑟夫環(huán)替換計(jì)數(shù)器m(數(shù)組解決)

2020-01-26 14:10:07
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

C++ 中約瑟夫環(huán)替換計(jì)數(shù)器m(數(shù)組解決)

題目描述:

輸入一個(gè)由隨機(jī)數(shù)組成的數(shù)列(數(shù)列中每個(gè)數(shù)均是大于0的整數(shù),長(zhǎng)度已知),和初始計(jì)數(shù)值m。從數(shù)列首位置開(kāi)始計(jì)數(shù),計(jì)數(shù)到m后,將數(shù)列該位置數(shù)值替換計(jì)數(shù)值m,并將數(shù)列該位置數(shù)值出列,然后從下一位置從新開(kāi)始計(jì)數(shù),直到數(shù)列所有數(shù)值出列為止。如果計(jì)數(shù)到達(dá)數(shù)列尾段,則返回?cái)?shù)列首位置繼續(xù)計(jì)數(shù)。請(qǐng)編程實(shí)現(xiàn)上述計(jì)數(shù)過(guò)程,同時(shí)輸出數(shù)值出列的順序

比如:

輸入的隨機(jī)數(shù)列為:3,1,2,4,初始計(jì)數(shù)值m=7,從數(shù)列首位置開(kāi)始計(jì)數(shù)(數(shù)值3所在位置)
第一輪計(jì)數(shù)出列數(shù)字為2,計(jì)數(shù)值更新m=2,出列后數(shù)列為3,1,4,從數(shù)值4所在位置從新開(kāi)始計(jì)數(shù)
第二輪計(jì)數(shù)出列數(shù)字為3,計(jì)數(shù)值更新m=3,出列后數(shù)列為1,4,從數(shù)值1所在位置開(kāi)始計(jì)數(shù)
第三輪計(jì)數(shù)出列數(shù)字為1,計(jì)數(shù)值更新m=1,出列后數(shù)列為4,從數(shù)值4所在位置開(kāi)始計(jì)數(shù)

最后一輪計(jì)數(shù)出列數(shù)字為4,計(jì)數(shù)過(guò)程完成。

輸出數(shù)值出列順序?yàn)椋?,3,1,4。

要求實(shí)現(xiàn)函數(shù):

void array_iterate(int len, int input_array[], int m, int output_array[])

【輸入】 int len:輸入數(shù)列的長(zhǎng)度;
               int intput_array[]:輸入的初始數(shù)列
               int m:初始計(jì)數(shù)值

【輸出】 int output_array[]:輸出的數(shù)值出列順序

【返回】 無(wú)

示例:

輸入:int input_array[] = {3,1,2,4},int len = 4, m=7
輸出:output_array[] = {2,3,1,4}

解題思路:

每次出列一個(gè)數(shù)值,需要對(duì)m、input_array、output_array、輸出位置outPos、起始位置startPos進(jìn)行更新;

對(duì)于輸出位置outPos的計(jì)算是關(guān)鍵!通過(guò)分析可知,outPos=(startPos+m-1)%num

#include <stdio.h>  void print_array(int len, int array[])  {    for(int i=0; i<len; i++)      printf("%d ", array[i]);    printf("/n");  }    void array_iterate(int len, int input_array[], int m, int output_array[])  {    int startPos=0;    int outPos;    int nIter=len-1;    int num=len;    for(; nIter>=0; nIter--)    {      outPos=(m+startPos-1)%num;//難點(diǎn),計(jì)算輸出的位置      m=input_array[outPos];      startPos=outPos;      printf("outPos is %d, m變?yōu)?%d/n", outPos, m);      output_array[len-nIter-1]=m;      for(int i=outPos; i<num-1; i++)        input_array[i]=input_array[i+1];      num--;      print_array(num, input_array); //輸出每次刪除后的數(shù)列    }  }  void main()  {    int input_array[]={3,1,2,4};    int output_array[4]={0};    array_iterate(4, input_array, 7, output_array);    printf("出列順序?yàn)?n");   print_array(4, output_array); //最后輸出output_array }  

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南靖县| 晴隆县| 城步| 武宣县| 永春县| 区。| 文山县| 五莲县| 寻甸| 崇明县| 惠东县| 千阳县| 库尔勒市| 简阳市| 高雄市| 佛学| 同仁县| 广南县| 南召县| 肇州县| 青河县| 永川市| 额尔古纳市| 渭源县| 波密县| 泗阳县| 吉首市| 杭锦旗| 霍邱县| 富锦市| 荣成市| 镇赉县| 包头市| 大同市| 竹北市| 鱼台县| 大洼县| 绥芬河市| 开阳县| 山西省| 彭阳县|