next_permutation函数
C++的标准函数库STL中,next_permutation()函数用于求数列的全排列。
下例中,输入1 2 3 4,输出有A4 4=4*3*2*1=24种排列。
int main()
{
vector<int> A;
A.push_back(1);
A.push_back(2);
A.push_back(3);
A.push_back(4);
do
{
cout << " " << A[0] << " " << A[1] << " " << A[2] << " " << A[3] << endl;
} while (next_permutation(A.begin(), A.end()));
system("pause");
return 0;
}
以输入字符串中的字符所构建的按字典顺序全排列中,判断当前字符串之后是否还有下一个字符串 。
如果没有,返回false;
stoi函数
(字符串,起始位置,2~32进制),将n进制的字符串转化为十进制。
string largestTimeFromDigits(vector<int>& A)
{
sort(A.begin(), A.end());
string res = "";
do {
string hours = { A[0] + '0', A[1] + '0' }, minutes = { A[2] + '0', A[3] + '0' };
int h = stoi(hours), m = stoi(minutes);
res = (h <= 23 && m <= 59) ? (hours + ":" + minutes) : res;
} while (next_permutation(A.begin(), A.end()));
return res;
}