阿里笔试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

相关推荐

点赞 评论 收藏
分享
01-02 00:50
三峡大学 Java
程序员牛肉:这简历一出手就离失业不远了。 作为一家公司来讲,我如果要招日常实习生,那我对实习生最基本的要求就是要能干活,毕竟你就待三四个月,谁会留心培养你? 那么除了院校之外,最重要的就是项目和实习了。没有实习的话项目就好好搞。 但是你说你这个项目吧:课程作业管理系统和TMS运输管理系统。这两个基本就和闹着玩差不多。 你作为一个想要应聘Java开发实习生的人,对后端的理解还仅仅停留在:“使用mapper和sql映射”,“使用SQL进行多表调用”,“基于MySQL简历表结构”,“基于Spring boot完成CURD操作”这种玩具上......... 找不到后端实习的
点赞 评论 收藏
分享
暮雨轻歌:看起来hr不能接受我菜查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务