配列を最小にする数(C++)
6968 ワード
タイトル記述は正の整数配列を入力し、配列内のすべての数字をつなぎ合わせて1つの数に並べ、つなぎ合わせることができるすべての数字の中で最小の1つを印刷します.例えば配列{3,32321}を入力すると、この3つの数字が並べられる最小数字は321323となる.
構想:sort()関数の使用方法:は2つのパラメータを含む:sort(ヘッダアドレス、テールアドレス);//デフォルトは、小さいから大きいに並ぶ です.は3つのパラメータを含む:sort(ヘッダアドレス、テールアドレス、ソート方法);//並べ替えられた 注意:to_stringメソッドはint型をstring型に変換する
構想:sort()関数の使用方法:
#include
#include
#include
#include
using namespace std;
static bool cmp(int a, int b) {
string A = "";
string B = "";
A += to_string(a);
A += to_string(b);
B += to_string(b);
B += to_string(a);
return A < B;
}
string PrintMinNumber(vector<int> numbers) {
string answer = "";
// :“ ”: , , , 。
sort(numbers.begin(), numbers.end(), cmp);
for (int i = 0;i < numbers.size();i++) {
answer += to_string(numbers[i]);
}
return answer;
}
int main() {
vector<int> arr;
int temp;
while (cin >> temp) {
arr.push_back(temp);
if (cin.get() == '
') {
break;
}
}
string res = PrintMinNumber(arr);
cout << res << endl;
return 0;
}