畢業旅行 oj題

Y星人-很發表於2024-07-06

對於輸入字串:

使用cin

cin適用於輸入不包含空格的字串。

#include <iostream>
using namespace std;

int main() {
    char str[1001]; // 字元陣列大小為1001,留一個位置給'\0'
    cin >> str;
    cout << "You entered: " << str << endl;
    return 0;
}

cin從輸入流中讀取字元,直到遇到空格、製表符、換行符或檔案結束符為止
遇到這些分隔符時,cin會停止讀取,並將已讀取的字元儲存在目標變數中。
空格、製表符和換行符本身不會儲存在目標變數中。

使用getline

getline可以讀取包含空格的整行字串。

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str;
    getline(cin, str); // 從標準輸入讀取一行
    return 0;
}

使用字元陣列和cin.get

這種方法也適用於包含空格的字串

#include <iostream>
using namespace std;

int main() {
    char str[1001]; // 字元陣列大小為1001,留一個位置給'\0'
    cin.get(str, 1001); // 讀取最多1000個字元
    cout << "You entered: " << str << endl;
    return 0;
}

使用cin.read(處理二進位制輸入)

如果需要處理可能包含換行符或其他特殊字元的二進位制資料,可以使用cin.read。

#include <iostream>
using namespace std;

int main() {
    char str[1001]; // 字元陣列大小為1001,留一個位置給'\0'
    cin.read(str, 1000); // 讀取最多1000個字元
    str[cin.gcount()] = '\0'; // 手動新增字串結束符
    cout << "You entered: " << str << endl;
    return 0;
}

最優子結構

關於問題的解決想法:

這裡是數字,我查到有把字串劃分為字典序字串的題,但不是數字形式,而是字母形式。

substr函式

定義
substr()是C++語言函式,主要功能是複製子字串,要求從指定位置開始,並具有指定的長度。如果沒有指定長度_Count或_Count+_Off超出了源字串的長度,則子字串將延續到源字串的結尾。

語法
substr(size_type _Off = 0,size_type _Count = npos)-->第一個引數:offset 第二個引數:所取字串長度。
一種構造string的方法
形式 : s.substr(pos, len)
返回值: string,包含s中從pos開始的len個字元的複製(pos的預設值是0,len的預設值是s.size() - pos,即不加引數會預設複製整個s)
異常 :若pos的值超過了string的大小,則substr函式會丟擲一個out_of_range異常;若pos+n的值超過了string的大小,則substr會調整n的值,只複製到string的末尾
例子:

erase函式

string& erase ( size_t pos = 0, size_t n = npos );

erase(pos,n); 刪除從pos開始的n個字元,比如erase(0,1)就是刪除第一個字元

動態規劃

總是列出狀態轉移方程,進行動態規劃求解。

相關文章