全排列补充

Posted yeah123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全排列补充相关的知识,希望对你有一定的参考价值。

上回说到全排列,这里进行补充。

运用搜索算法,进行全排列。

 1 #include<iostream>
 2 
 3 using namespace std;
 4 int a[1000];
 5 
 6 void search(int t)
 7 {
 8   if(t>3)
 9   {
10     for(int i=1;i<=3;i++)
11       cout<<a[i]<<" ";
12     cout<<endl;
13     return;
14   }
15   for(int i=1;i<=3;i++)
16   {
17     a[t]=i;
18     search(t+1);
19   }
20 }
21 
22 int main()
23 {
24   search(1);
25 }

这样一来会发现有重复的这样的话我们只需要筛选一下,运用通数组标记。

 1 #include<iostream>
 2 
 3 using namespace std;
 4 int a[1000],to[1000];
 5 
 6 void search(int t)
 7 {
 8   if(t>3)
 9   {
10     for(int i=1;i<=3;i++)
11       cout<<a[i]<<" ";
12     cout<<endl;
13     return;
14   }
15   for(int i=1;i<=3;i++)
16   {
17     if(to[i]) continue;
18     to[i]=true;
19     a[t]=i;
20     search(t+1);
21     to[i]=false;    
22   }
23 }
24 
25 int main()
26 {
27   search(1);
28 }

以上是关于全排列补充的主要内容,如果未能解决你的问题,请参考以下文章

面试题—有重复序列全排列问题

面试题—有重复序列全排列问题

面试题—有重复序列全排列问题

生成可重集的排列

请教matlab中分组排列问题

VSCode 配置 用户自定义代码片段 自定义自动代码补充