谁知道这个程序的时间复杂度

#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!)