#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
++n;
map<int,vector<int>> a;
a[1].push_back(2);
for(int i=2;i<n;++i)
{
for(int j=1;j<i;++j)
{
for(int k=0;k<a[j].size();++k)
{
a[i].push_back(a[j][k]+2);
a[i].push_back(a[j][k]-2);
a[i].push_back(a[j][k]*2);
if(a[j][k]%2==0)
{
a[i].push_back(a[j][k]/2);
}
}
}
}
for(int i=1;i<n;++i)
{
cout<<i<<":";
sort(a[i].begin(),a[i].end());
for(int j=0;j<a[i].size();++j)
{
if(a[i][j-1]!=a[i][j])
{
cout<<a[i][j]<<' ';
}
}
cout<<endl;
}
return 0;
}
之前看错了,以为for k是常数级别
试算了一下,是阶乘级别
数据生成的时候
i 2 3 4 5
j 1 2 3 4
k 1 2x4 3x2x4 4x3x2x4
时间复杂度=1+2x4+3x2x4+4x3x2x4 ...
约为(1+2!+3!+4!+...+n!)x4
所以应该是O(n!)
数据输出的时候
i 1 2 3 4
j 1 4 2x4 3x2x4
也是阶乘级别 O(n!)