1、
題目描述:
給定一個長度為 n 的數組,數組元素為 a1, a2, . . , an,每次能刪除任意 a 的任意一位,求將所有數字變成 0 最少需要幾步。例如 103 若刪除第 1 位則變成 3; 若刪除第 2 位則變成13; 若刪除第 3 位則變成 10。
輸入
輸入描述第一行一個正整數 n 代表數組長度。接下來一行 n 個數第 j 個數代表 a。
輸出
輸出一行一個數代表答案。
樣例輸入
5
10 13 22 100 30
樣例輸出
7
提示
數據范圍:
1 ≤ n ≤ 10^5
0< ai< 10^9
2、解答
#include <iostream>
#include <vector>
#include <sstream> // 用于字符串流
int main()
{int n, count = 0;std::string line;std::cin >> n;std::cin.ignore();//忽略換行符,拿到下一行數據std::vector<int> data;std::getline(std::cin, line); // 讀取一整行// 使用字符串流來解析這行數據std::istringstream iss(line);int number;while (iss >> number) { // 當字符串流中還有整數時,繼續讀取data.push_back(number); // 將讀取的整數添加到向量中}for (int j = 0; j < n; j++){if (data[j] == 0)continue;if (data[j] / 1000000000){data[j] = data[j] % 1000000000;count++;}if (data[j] / 100000000){data[j] = data[j] % 100000000;count++;}if (data[j] / 10000000){data[j] = data[j] % 10000000;count++;}if (data[j] / 1000000){data[j] = data[j] % 1000000;count++;}if (data[j] / 100000){data[j] = data[j] % 100000;count++;}if (data[j] / 10000){data[j] = data[j] % 10000;count++;}if (data[j] / 1000){data[j] = data[j] % 1000;count++;}if (data[j] / 100){data[j] = data[j] % 100;count++;}if (data[j] / 10){data[j] = data[j] % 10;count++;}if (data[j])count++;}std::cout << count << std::endl;return 0;
}
關鍵代碼
代碼段中,使用了 std::getline
來從標準輸入讀取一整行數據,然后使用 std::istringstream
來解析這行數據中的整數,并將它們存儲到一個 std::vector<int>
容器中。這是一個常見的模式,用于處理和轉換由空格分隔的輸入數據。下面是對每個步驟的詳細解釋:
std::getline(std::cin, line); // 讀取一整行
- 這行代碼使用
std::getline
函數從標準輸入(通常是鍵盤輸入)讀取一整行文本,并將其存儲在字符串變量line
中。這種方法可以讀取包含空格的整行輸入,直到遇到換行符。
std::istringstream iss(line);
- 創建了一個
std::istringstream
對象iss
,并用之前從標準輸入讀取的字符串line
初始化它。std::istringstream
是從<sstream>
頭文件中提供的一個類,它允許我們將字符串作為流來處理,這樣可以使用類似于從文件或標準輸入讀取的方式來從字符串中提取數據。
int number;
while (iss >> number) { // 當字符串流中還有整數時,繼續讀取
- 在這個循環中,
iss >> number
嘗試從iss
字符串流中提取一個整數到變量number
中。如果成功,表達式的結果為true
,循環繼續。如果遇到非整數數據或流結束,表達式結果為false
,循環停止。
data.push_back(number); // 將讀取的整數添加到向量中
}
- 每次循環時,如果成功從流中讀取了一個整數,就使用
push_back
方法將這個整數添加到std::vector<int>
類型的向量data
中。這樣,所有從輸入行中讀取的整數都會被依次存儲在data
向量中。
這種方法非常適合于處理和解析由空格分隔的整數輸入,可以靈活地應用于多種需要從文本行中提取多個數據項的場景。