日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

38.报数(C++实现)

發布時間:2023/12/29 c/c++ 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 38.报数(C++实现) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

報數序列是一個整數序列,按照其中的整數的順序進行報數,得到下一個數。其前五項如下:

  • 1
  • 11
  • 21
  • 1211
  • 111221
  • 1 被讀作 “one 1” (“一個一”) , 即 11。
    11 被讀作 “two 1s” (“兩個一”), 即 21。
    21 被讀作 “one 2”, “one 1” (“一個二” , “一個一”) , 即 1211。

    給定一個正整數 n(1 ≤ n ≤ 30),輸出報數序列的第 n 項。

    注意

    整數順序將表示為一個字符串。

    示例

    示例 1:

    輸入: 1
    輸出: “1”
    示例 2:

    輸入: 4
    輸出: “1211”

    源碼

    string countAndSay(int n) {string b;int a[10000] = { 0 }, z = 1, s = 0, v = 1, sum = 0, c[10000] = { 0 };//z為各有效數字累計個數int ss;a[0] = 0;//第0個位置的元素不被使用,無效元素位置a[1] = 1;//初始值for (int i = 1; i < n; i++)//共更迭n次{s = 0; //有效數字位數歸零for (int j = 1; a[j] <= 9 && a[j] > 0; j++)//計算a數組中有效數字位數s++;ss = 1;//指針ss歸位,重新指向第一個元素while (sum < s&&a[ss]!=0)//如果未處理完所有的有效數字就繼續循環{while (a[ss] == a[ss+1])//如果當前數字和下一個數字相等則指針ss跳向下一個有效數字,且當前有效數字的連續累計個數加一{ss++;z += 1;}c[v++] = z;//將累計數字個數賦值進c數組c[v++] = a[ss++];//將數字元素賦值給下一個單位sum += z;//本次循環處理了z個數字,當前總共處理了sum個數字z = 1;//將z歸為1,以方便下次使用}for (v-1; v>0; v--)//將c數組中的元素傳入a數組中a[v] = c[v];sum = 0;//sum歸零v = 1;//v歸一}s = 0;for (int j = 1; a[j] <= 9 && a[j] > 0; j++)s++;for (int i = 1; s>0 && a[i] != 0; s--,i++)b+= to_string(a[i]);return b; }

    總結

    以上是生活随笔為你收集整理的38.报数(C++实现)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。