阿里笔试7.22 第一题 C++求指教
在线AC 30% 很奇怪,本地编译器AC 90%, 只有n == 10 不通过
有大佬知道吗,谢谢
#include<iostream> #include<vector> #include<algorithm> using namespace std; bool check(vector<int> nums) { if (nums.size() <= 1) return false; for (int i = 1; i < nums.size(); i++) { if (abs(nums[i] - nums[i - 1]) <= 1) return true; } return false; } void backtrack(vector<int>& nums, vector<int>& temp, vector<vector<int>>& res, vector<bool>& track); vector<vector<int>> sort_all(vector<int> & nums) { vector<vector<int>> res; vector<int> temp; vector<bool> track(nums.size(), false); backtrack(nums, temp, res, track); return res; } void backtrack(vector<int>& nums, vector<int>& temp,vector<vector<int>>& res, vector<bool>& track) { if (temp.size() == nums.size()) { res.emplace_back(temp); return; } for (int i = 0; i < nums.size(); i++) { if (track[i] == true || check(temp)) continue; // || (!temp.empty() && abs(nums[i] - nums[i-1]) == 1) temp.push_back(nums[i]); track[i] = true; backtrack(nums, temp, res, track); temp.pop_back(); track[i] = false; } } int main() { int n; cin >> n; vector<int> nums(n); for (int i = 0; i < n; i++) { nums[i] = i + 1; } vector<vector<int>> res = sort_all(nums); for (int i = 0; i < res.size(); i++) { for (int j = 0; j < n; j++) { cout << res[i][j] << " "; } cout << endl; } return 0; }#笔试题目##C/C++#