Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
139168 | 梁思宸 | 全排列问题 | C++ | 解答错误 | 40 | 4 MS | 260 KB | 619 | 2024-03-21 23:40:47 |
#include <iostream> using namespace std; int cnt = 0, n; char s[20005]; void Permutation(char *s,int p)//从数组s的第p个位置开始全排列 { if(p==n) { printf("%s\n",s); cnt++; return; } for(int i=p;i<n;i++) { swap(s[i],s[p]);//每个字符都有成为当前起始字符的机会 Permutation(s,p+1); swap(s[i],s[p]);//返回初始状态,才能保证后面的交换是正确的, 回溯 } } int main(){ cin>>n; for (int i = 0; i < n; i++) s[i] = i + '1'; Permutation(s,0); cout<<cnt; return 0; }