TLE求助
查看原帖
TLE求助
572269
KevinMark楼主2023/2/1 15:57

第二个样例开始TLE,求助! 主要是用c++的next_permutation函数,枚举每一种情况,如果和输入的数组一样就停止枚举,然后输出,但是不知道为什么会超时

#include<stdc++.h>
using namespace std;
int main() {
	int a[10005];
	ios::sync_with_stdio(0);
	int n = 0;
	int m = 0;
	scanf_s("%d %d", &n, &m);
	int b[10005];
	for (int i = 1; i <= n; i++) {
		scanf_s("%d", &b[i]);
	}
	sort(b + 1, b + 1 + n);
	for (int i = 1; i <= n; i++) {
		a[i] = i;
	}
	int cnt = 0;
	int cnt2 = 0;
	int cnt3 = -1;
	do {
		int f = 1;
		for (int i = 1; i <= n; i++) {
			if (a[i] != b[i]) {
				f = 0;
				break;
			}
				
		}
		if (f == 1) {
			cnt += m;
			cnt3 = cnt;
		}
		if (cnt2 == cnt3) {
			for (int i = 1; i <= n; i++) {
				printf("%d", a[i]);
				if (i > 0 && i < n)
					printf(" ");
			}
			break;
		}
		cnt++; cnt2++;
	} while (next_permutation(a + 1, a + 1 + n));
	return 0;
}
2023/2/1 15:57
加载中...