python 字母順序計數_計數并說出順序

python 字母順序計數

Problem statement:

問題陳述:

The count-and-say sequence is the sequence of integers with the first five terms as following:

計數序列是具有前五個項的整數序列,如下所示:

  1. 1

    1個

  2. 11

    11

  3. 21

    21

  4. 1211

    1211

  5. 111221

    111221

1 is read off as "one 1" or 11.

1被讀出為“一個1”或11。

11 is read off as "two 1s" or 21.

11被讀出為“兩個1”或21。

21 is read off as "one 2, then one 1" or 1211.

21被讀出為“一個2,然后一個1”或1211。

That means every integer (repeated continuously) is read off with its count value.

這意味著將讀取每個整數(連續重復)及其計數值。

For a given n, Print the count and say sequence.

對于給定的n ,打印計數并說出順序。

Examples

例子

For n=0
It's a blank string
-------------------------
For n=1
Its "1"
-------------------------
For n=2, we need to evaluate the previous string which is for n=1
For n=1
"1"
So one "1"
Thus For n=2
"11"
-------------------------
Needless to say for n=3
Evaluating n=2 results in two "1"->"21"
So on...

Solution:

解:

Pre-requisite:

先決條件:

to_string function: In C++ we have an in-build function which converts a numerical value to its string representation. Like 1 is converted to "1" (the first 1 is of int datatype, while the second is of string datatype).

to_string函數:在C ++中,我們有一個內置函數,該函數將數字值轉換為其字符串表示形式。 像1轉換為“ 1”(第一個1是int數據類型,而第二個是字符串數據類型)。

prototype of the function is:

該函數的原型是:

    string to_string (int value);

Algorithm:

算法:

  1. Check for base cases

    檢查基本情況

  2.     if(n==0)
    return "";
    if(n==1)
    return "1";
    
    
  3. For rest of the cases, it must start from 1, thus initialize result with string "1". result is our output string which will be printed for each label.

    在其他情況下,它必須從1開始,因此用字符串“ 1”初始化結果 。 結果是將為每個標簽打印的輸出字符串。

  4. Print result for level 1. (As level >1 now)

    打印級別1的結果 。(現在級別> 1)

  5. Declare a temporary string only to get the current level result. Let the temporary string be temp.

    聲明一個臨時字符串只是為了獲得當前級別的結果。 讓臨時字符串為temp 。

  6. For i=1:n //iterate for rest of the rows

    對于i = 1:n //重復其余行

    1. Store the length of result (carrying the result of last processed level actually) string length
    2. 存儲結果的長度(實際攜帶最后處理的水平的結果)字符串的長度
    3. Let the length be len
    4. 讓長度為len
    5. For j=0:lentemp=temp+ to_string(count) + result[j] //count comes first
    6. 對于j = 0:len temp = temp + to_string(count)+ result [j] //首先計數
    7. Current level string is processed in temp, So update result=temp
    8. 當前級別的字符串在temp中處理,因此update result = temp
    9. Print result
    10. 打印結果
    11. Clear temp for further levels
    12. 清除溫度以達到更高的水平
  7. End For

    結束于

C++ implementation

C ++實現

#include <bits/stdc++.h>
using namespace std;
void countAndSay(int n) {
//base cases
if(n==0)
return "";
if(n==1)
return "1";
//for rest of the cases, it must start from 1   
//initialize result with string "1"
string result="1";
cout<<result<<endl;
string temp;//temporary string to hold levelwise result
for(int i=1;i<n;i++){ //iterate for n-1 rows
//iterate upto current string length
int len=result.length();
for(int j=0;j<len;j++){
int count=1;//initialize count as 1
//find count for repeated number
while(j+1<len && result[j]==result[j+1] ){
count++;
j++;
}
//convert the count to string and add to 
//temprary result, then add original no
temp+=to_string(count)+result[j];
}
//assign temporary result to original result 
//& print for current level 
result=temp;
cout<<result<<endl;
//clear the temporary result
temp="";
}
}
int main(){
int n;
cout<<"count and Say problem.....\n";
cout<<"enter n, no of rows\n";
cin>>n;
//function to print count and say sequence
coutAndSay(n);
return 0;
}

Output

輸出量

First run:
count and Say problem.....
enter n, no of rows
3
Printing Count and Say sequence...
1
11
21
Second run:
enter n, no of rows
6
Printing Count and Say sequence...
1
11
21
1211
111221
312211
Third run:
count and Say problem.....
enter n, no of rows
10
Printing Count and Say sequence...
1
11
21
1211
111221
312211
13112221
1113213211
31131211131221
13211311123113112211

How the program works?

該程序如何工作?

Let's solve an example for n=3
Base case not matched
Result="1"
Thus it prints "1" and proceeds for rest of two level
Output at level-1
1
--------------------------------------------------------
1st iteration
In the outer for loop
i=1 & i< 3
Length of result=1 (result="1")
Inner loop executes only once, since len=1
Thus count=1
temp =to_string(1) +"1"
="1"+"1" ="11"
result="11"
temp=""
output at level-2
11
So output printed up to now:
1
11
--------------------------------------------------------
2nd iteration
In the outer for loop
i=2& i< 3
Length of result=2 (result="11")
Inner loop executes twice, since len=2
Thus count=2 // "1" repeating twice, no other character
temp =""+to_string(2) +"1" ("" is temp previously updated, cleared basically)
="2"+"1" ="21"
result="21"
temp=""
output at level-3
21
So output printed up to now:
1
11
21
--------------------------------------------------------
3rd iteration
i=3 thus loop ends
Output is printed
Thus count and say sequence for n=3
1
11
21

翻譯自: https://www.includehelp.com/icp/count-and-say-sequence.aspx

python 字母順序計數

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540712.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540712.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540712.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微信網頁掃碼登錄的實現

為了讓用戶登錄網站的門檻更低&#xff0c;微信掃一掃登錄變得越來越廣泛&#xff0c;所以最近加緊趕制的項目中有用到這個功能&#xff0c;此篇文字的出發點基于微信開放平臺已經配置好域名&#xff08;80端口&#xff09;并且認證成功獲得app_id和secret并有權限調用微信的接…

希爾密碼_希爾密碼| 網絡安全

希爾密碼Now, Hill Cipher is a very basic cryptographic technique which is used to convert a string into ciphertext. This technique was invented by an American Mathematician "Lester Sanders Hill". This is a polygraphic substitution cipher because …

Android 那些年,處理getActivity()為null的日子

在日常開發中的時候&#xff0c;我們經常會使用ViewPagerFragment進行視圖滑動&#xff0c;在某些部分邏輯也許我們需要利用上下文Context&#xff08;例如基本的Toast&#xff09;&#xff0c;但是由于Fragment只是衣服在Activity容器的一個試圖&#xff0c;如果需要拿到當前的…

設計模式狀態模式uml_UML的完整形式是什么?

設計模式狀態模式umlUML&#xff1a;統一建模語言 (UML: Unified Modeling Language) UML is an abbreviation of Unified Modeling Language. In the field of software engineering, it is a visual modeling language that is standard in quality. It makes it available t…

idea debug快捷鍵

idea的debug調試快捷鍵 F9 resume programe 恢復程序 AltF10 show execution point 顯示執行斷點 F8 Step Over 相當于eclipse的f6 跳到下一步 F7 Step Into 相當于eclipse的f5就是 進入到代碼 AltshiftF7 Force Step Into 這個…

vqa mcb_MCB的完整形式是什么?

vqa mcbMCB&#xff1a;微型斷路器 (MCB: Miniature Circuit Breaker) MCB is an abbreviation of "Miniature Circuit Breaker". MCB是“微型斷路器”的縮寫 。 It is an automatically operated electronics switch. It is designed to detect the fault in the e…

返回表達式列表中最小值least(exp1,exp2,exp3,……,expn)

1 least(exp1,exp2,exp3,……,expn)2 【功能】返回表達式列表中值最小的一個。如果表達式類型不同&#xff0c;會隱含轉換為第一個表達式類型。3 【參數】exp1……n&#xff0c;各類型表達式4 【返回】exp1類型5 6 【示例】7 SELECT least(10,32,123,2006) FROM dual;8 9 SEL…

Java Short類hashCode()方法及示例

短類hashCode()方法 (Short class hashCode() method) hashCode() method is available in java.lang package. hashCode()方法在java.lang包中可用。 hashCode() method is used to return hashcode of the Short object.hashCode()方法用于返回Short對象的哈希碼。 hashCode(…

CentOS忘記普通用戶密碼解決辦法

普通用戶忘記密碼 1.使用root用戶登錄系統&#xff0c;找到/etc/shadow文件。 2.找到用戶名開頭的那一行&#xff0c;例如我的用戶名為pds,&#xff0c;以冒號為分割符&#xff0c;紅色部分是密碼加密部分 pds:$1$CivopRgF$ajWQ54W1XJbifFjm05Jk/1:15353:0:99999:7::: 3.pds是我…

julia 編程語言_Julia編程語言中的變量

julia 編程語言Julia中的變量 (Variables in Julia) Just like other programming languages, in Julia variables are the name of memory blocks that are associated (or bound) to a value. It is useful when a value to be stored or to be accessed in/from memory loca…

php腳本超時 結束執行代碼

函數&#xff1a;stream_context_create ,file_get_content 創建并返回一個文本數據流并應用各種選項&#xff0c;可用于fopen(),file_get_contents()等過程的超時設置、代理服務器、請求方式、頭信息設置的特殊過程。函數原型&#xff1a;resource stream_context_create ([ a…

c#byte字節流的讀取_C#中的byte關鍵字

c#byte字節流的讀取C&#xff03;字節關鍵字 (C# byte keyword) In C#, byte is a keyword which is used to declare a variable that can store an unsigned value between 0 to 255. byte keyword is an alias of System.Byte. 在C&#xff03;中&#xff0c; byte是一個關鍵…

esp32的GPIO操作

對于任何一款芯片&#xff0c;GPIO接口是其最基本的組成部分&#xff0c;也是一款芯片入門的最基本操作&#xff0c;下面論述下 關于esp32開發版的GPIO操作&#xff0c;本文中重點講解下 關于如何創建eclipse工程&#xff0c;并通過eclipse下載到esp32中去&#xff08;本文的工…

c# bool?和bool_C#中的bool關鍵字

c# bool?和boolC&#xff03;bool關鍵字 (C# bool keyword) In C#, bool is a keyword which is used to declare a variable that can store Boolean values true or false. bool keyword is an alias of System.Boolean. 在C&#xff03;中&#xff0c; bool是一個關鍵字&am…

聚焦數據的力量——全球領先安全技術分享會在京召開

ZD至頂網安全頻道 04月21日 綜合消息&#xff1a; 由中國網絡安全與信息化產業聯盟、360共同主辦的“數據的力量——全球領先安全技術分享會“今日在北京成功召開。來自政府、企業、教育、投資機構和產業聯盟的300多位嘉賓參加了本次技術分享會&#xff0c;共同就安全產業發展趨…

algol語言_ALGOL的完整形式是什么?

algol語言ALGOL&#xff1a;算法語言 (ALGOL: Algorithmic Language) ALGOL is an abbreviation of "Algorithmic Language". ALGOL是“算法語言”的縮寫 。 It is a family of very significant computer programming languages, initially designed and created i…

Qt/QML編程學習之心得:一個.qml文件調用另一個.qml文件(十七)

在c++中,一個文件調用另外一個文件最直接最快捷的方式就是#incldue<頭文件>的使用,那么在元數據描述性語言QML中,如何從一個界面描述調用另外一個界面描述,一個.qml文件調用另外一個.qml呢?QML雖然有個import,但是用法可以說完全不同于#include。 引用方法1:直接…

如何設置Fedora默認從命令行啟動?

2019獨角獸企業重金招聘Python工程師標準>>> Sumary:因為在Fedora中沒有/etc/initab文件我們不方便從這里設置它的runlevel target&#xff0c;但是Linux又給我們提供了一個強悍的工具systemd,我們可以用system來鏈接默認的啟動級別&#xff0c;所以開始吧&#xff…

scala 線性回歸_Scala的特征線性化

scala 線性回歸Scala | 特性線性化 (Scala | Trait Linearization) In Scala programming language, trait linearization is a property that helps to rectify ambiguity when instances of a class that are defined using multiple inheritances from different classes an…

MDK C++中對內聯的極度優化

先來看看我們SmartIRQ的具體實現 // 智能IRQ&#xff0c;初始化時備份&#xff0c;銷毀時還原 class SmartIRQ { public:force_inline SmartIRQ(bool enable false){_state __get_PRIMASK();if(enable)__enable_irq();else__disable_irq();}force_inline ~SmartIRQ(){__set_P…