数字排列next_permutation
输入一组数字(可能包含重复数字),输出其所有的排列方式。
数据范围
输入数组长度 [0,6]。
样例
输入:[1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
class Solution {
public:
vector<vector<int>> permutation(vector<int>& nums) {
sort(nums.begin(),nums.end());
vector<vector<int>> res;
do res.push_back(nums);
while(next_permutation(nums.begin(),nums.end()));
return res;
}
};
next_permutation函数的功能是将数组中选定范围的数按照字典序进行全排列.
他可以求出比一个排列大的下一个排列
![](https://img-blog.csdnimg.cn/img_convert/31b4a14bad61a9e3ebbc1378f7a8b94b.png)
2301_82275317: 不能输出
斌^O^111: #include<stdio.h> int main(){ int i=1,num=1,m=10; int n; scanf("%d",&n); for(;i!=0;num++){ if(n<0) n=-n; else n=n; i=n%m; m=m*10; } printf("It contains %d digits.",num); return 0; } 这个哪里有错误
Donaldfrist: for循环里面,grade就是输入成绩
m0_73876559: 直接在班级人数后面输入成绩么
Donaldfrist: 学生成绩不就是你输入的成绩吗