最后一个点MLE,求助
查看原帖
最后一个点MLE,求助
574701
EscOutlier楼主2022/5/1 15:16
/*思路是把这个排列看成一个数,第m位是n+1进制,m-1位是n进制......*/
#include<bits/stdc++.h>
using namespace std;
int n=0,m=0,a[100]={0},i,flag;
int main(){
	if(n==0 && m==0) scanf("%d %d",&n,&m);
	if(a[1]==0) for(i=1;i<=m;i++) a[i]=i;
	for(i=1;i<=m;i++){
		printf("%3d",a[i]);
	}
	printf("\n");
	a[m]++;
	for(i=m;i>=2;i--){
		if(a[i]>n-m+i){
			flag=i;//这一位需要进位
			a[i-1]++;
		}
		else break;
	}
	if(flag!=0){//处理进位
		for(i=flag;i<=m;i++){
			a[i]=a[i-1]+1;
		}
		flag=0;
	}
	if(a[1]==n-m+2) return 0;
	main();
}
2022/5/1 15:16
加载中...