站外题求助
  • 板块灌水区
  • 楼主elo_Sama
  • 当前回复9
  • 已保存回复9
  • 发布时间2024/8/10 10:51
  • 上次更新2024/8/10 11:36:12
查看原帖
站外题求助
1414065
elo_Sama楼主2024/8/10 10:51

站外题,本来100后来改了数据变50TLE了,求助

题目描述:从 1 到 n 中,任意选出 m 个数的所有排列,计算出方案数。

输入格式:两个整数n和m

输出格式:输出每一种方案以及方案数

样例

输入数据 1

4 3

输出数据 1

1 2 3 
1 2 4 
1 3 2 
1 3 4 
1 4 2 
1 4 3 
2 1 3 
2 1 4 
2 3 1 
2 3 4 
2 4 1 
2 4 3 
3 1 2 
3 1 4 
3 2 1 
3 2 4 
3 4 1 
3 4 2 
4 1 2 
4 1 3 
4 2 1 
4 2 3 
4 3 1 
4 3 2 
24

数据范围:1<=m<=n<=10

代码(加了臭氧优化也会T):

#include<bits/stdc++.h>
using namespace std;
int a[101]={0},n,m,ans=0;
bool b[101]={0};
void func(int k){
	for(int i=1;i<=n;i++){
		if(!b[i]){
			a[k]=i;
			b[i]=1;
			if(k==m){
				ans++;
				for(int i=1;i<=m;i++) cout<<a[i]<<" ";
				cout<<endl;
			}
			else func(k+1);
			b[i]=0;
		}
	}
}
int main(){
	cin>>n>>m;
	func(1);
	cout<<ans;
	return 0;
}
2024/8/10 10:51
加载中...