阿里笔试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++#
全部评论
写个函数就行了吧,你这也太长了
点赞 回复 分享
发布于 2020-07-22 23:55

相关推荐

点赞 评论 收藏
分享
2024-12-26 13:00
太原理工大学 Java
会飞的猿:简历没啥大问题啊,感觉是缺少了实习经历。多投投先找个中小厂过渡一下吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务