全是MLE.....怎么回事(哭)求助各路神仙
查看原帖
全是MLE.....怎么回事(哭)求助各路神仙
313354
Ella2020楼主2020/7/9 16:20
#include<stdio.h>
#include<string.h>

//一个函数将剩下的数字变成连续数字
void serialize(int, int *);
//一个函数递归调用直到数列只剩1个数
void find_order(int, int *, int);
//算阶乘(factorial)函数
int factorial(int);


int main(void) {
	int N = 0;
	char X[10] = { 0 };
	scanf("%d", &N);
	getchar();//吞换行
	gets(X);
	int number = strlen(X);

	int x[10] = { 0 };
	for (int i = 0; i < number; i++) {
		x[i] = (int)(X[i] - '0');
	}//将字符型转换为整数型

	find_order(number, x,1);

	return 0;
}
void find_order(int number, int * x,int sum) {
	if (number == 1) {
		printf("%d", sum);
		return;
	}
	else {
		if (x[0]>1) {
			sum += (factorial(number - 1))*(x[0] - 1);
			serialize(number, x);
			find_order(number - 1, x, sum);
		}
		else {
			serialize(number, x);
			find_order(number - 1, x, sum);
		}
	}
}
int factorial(int m) {
	int n = 1;
	for (int i = 1; i <= m; i++) {
		n *= i;
	}
	return n;
}
void serialize(int number, int * x) {
	int a = x[0];
	for (int i = 0; i < number - 1; i++) {
		x[i] = x[i + 1] > a ? (x[i + 1] - 1) : x[i + 1];
	}
	return;
}
2020/7/9 16:20
加载中...