百度之星T4为啥TLE
  • 板块题目总版
  • 楼主Natsuzora
  • 当前回复7
  • 已保存回复7
  • 发布时间2021/8/8 15:50
  • 上次更新2023/11/4 11:37:20
查看原帖
百度之星T4为啥TLE
73480
Natsuzora楼主2021/8/8 15:50

题目
我的代码

#include <cstdio>
using namespace std;

int t, n, ans;
bool used[80];
void dfs(int i, int p){
	if(used[p]) return;
	if(i == n){
		ans++;
		return;
	}
	used[p] = true;
	dfs(i + 1, (p + i) % n);
	dfs(i + 1, (p + n - i) % n);
	used[p] = false;
}

int main(){
	scanf("%d", &t);
	while(t--){
		ans = 0;
		scanf("%d", &n);
		dfs(1, 0);
		printf("%d\n", ans);
	}
	return 0;
}

官方题解

#include <bits/stdc++.h>

using namespace std;

int n, cnt, test;
bool b[101];

inline void soso(int step, int cur, int n) {
	if (step == n) {
		++cnt;
		return;
	}
	int x = cur + step;
	if (x > n)
		x -= n;
	if (!b[x]) {
		b[x] = true;
		soso(step + 1, x, n);
		b[x] = false;
	}
	x = cur - step;
	if (x <= 0)
		x += n;
	if (!b[x]) {
		b[x] = true;
		soso(step + 1, x, n);
		b[x] = false;
	}
}

int main() {
	scanf("%d", &test);
	for (; test--; ) {
		scanf("%d", &n);
		cnt = 0;
		memset(b, false, sizeof(b));
		b[1] = true;
		soso(1, 1, n);
		printf("%d\n", cnt);
	}
}

我真的横竖看不出本质算法有什么区别好吧

2021/8/8 15:50
加载中...