yukicoder No.39 桁の数字を入れ替え
問題概要
数字の一か所を入れ替えて、最も大きい数字を求める。
解法
数字を文字として扱う。文字列の一か所を入れ替えたものを全探索している。出来上がった文字列をstring型のvector配列にいれて、ソートする。数字だけじゃなくて、文字列もソートできる。
ミス
特になし。
コード
#include <iostream> #include <algorithm> #include <vector> #include <cstdlib> #include <cstring> using namespace std; #define rep(i,n) for(int i=0;i<(n);i++) int main(void){ string n; cin >> n; vector<string> ans; ans.push_back(n); for (int i = 0; i < n.size(); ++i){ for (int j = i + 1; j < n.size(); ++j){ string tmp = n; swap(tmp[i], tmp[j]); ans.push_back(tmp); } } //降順に並び替える sort(ans.begin(), ans.end()); reverse(ans.begin(), ans.end()); cout << ans[0] << endl; return 0; }