求指导
查看原帖
求指导
1317541
xzllllll楼主2024/4/2 18:22

为啥不对呀


#include<iostream>
#include<vector>
#include<iomanip>
using namespace std;
int n, r;
vector<vector<int>> result(50, vector<int>(50, 0));
vector<int> path(50);
bool ke(vector<int> path) {
	for (int i = 0; i < path.size(); i++) {
		if (path[i] > path[path.size() - 1]) {
			return false;
		}
		if (path[i] < path[0]) {
			return false;
		}
	}
	return true;
}
void dfs(int nown, vector<bool>& used) {
	if (nown == r&&ke(path)) {
		result.push_back(path);
		return;
	}
	for (int i = 1; i <= n; i++) {
		if (used[i] == true) {
			continue;
		}
		if (used[i] == false) {
			used[i] = true;
			path.push_back(i);
			dfs(nown + 1, used);
			path.pop_back();
			used[i] = false;
		}
	}
}
int main() {
	cin >> n >> r;
	vector<bool> used(50, false);
	result.clear();
	path.clear();
	dfs(0, used);
	for (int i = 0; i < result.size(); i++) {
		for (int j = 0; j < result[0].size(); j++) {
			cout <<setw(3)<< result[i][j];
		}
		cout << endl;
	}
}
2024/4/2 18:22
加载中...