今晚招行笔试,编程题第二题

刚招行第二题,我在本地ide上可以输出答案,为什么在题目上提交答案符合度为0.。。
(今晚感觉好像不是很难,但好多Java题。。。)
最后第三大题简答题第三小题是不是构造一个哈希
代码:
#include<iostream>
#include<vector>
#include<cstring>
using namespace std;

void fun(vector<string>&res,string s,int n,int i){
    if(i>=n){
        res.push_back(s);
        return;
    }
    for(int j=1;j<=(n-i);j++){  int tmp=j;  string s1="";
        while(tmp--){
            s1+="(";
        }
        tmp=j;
        while(tmp--){
            s1+=")";
        }
        fun(res,s+s1,n,i+j);
    }
}

int main(){  int n;
    cin>>n;
    vector<string>res;
    string s;
    fun(res,s,n,0);
    string str="";
    int i=res.size()-1;
    for(;i>0;i--){
        str=str+res[i]+",";
    }
    str+=res[i];
    cout<<str<<endl;
}
这是本地ide一个例子

#笔试题目#
全部评论
要按照字典序输出,你的代码3的时候是错的。 #include <iostream> #include <vector> #include <map> #include <cstring> #include <string> #include <algorithm> using namespace std; char ss[10000005]; int pos = 0; bool fg = true; void dfs(int pos, int l, int r, int flag) { if (r < l) return ; if (l == 0 && r == 0) { ss[pos] = '\0'; if (fg == true) { fg = false; printf("%s", ss); return ; } printf(",%s", ss); return ; } if (flag == 0) { for (int i = l; i > 0; --i) { for (int j = 0; j < i; ++j) { ss[pos + j] = '('; } dfs(pos + i, l - i, r, flag ^ 1); } } else { for (int i = 1; i <= r; ++i) { for (int j = 0; j < i; ++j) { ss[pos + j] = ')'; } dfs(pos + i, l, r - i, flag ^ 1); } } } int main() { ios::sync_with_stdio(false); //freopen("input.txt", "r", stdin); int n; cin >> n; dfs(0, n, n, 0); puts(""); return 0; }
点赞 回复 分享
发布于 2018-03-29 21:31
测试用例n可能没有很小的数,我直接if elseprint了几个都是0 哈哈
点赞 回复 分享
发布于 2018-03-29 21:19
能否分享下后面两题的代码啊
点赞 回复 分享
发布于 2018-03-29 21:22
这个题,我用了1个小时,,,,没写出来,不清醒
点赞 回复 分享
发布于 2018-03-29 21:26
估计是要按顺序输出吧顺序就是先左后右。 #include <bits/stdc++.h> using namespace std; int n; bool first = true; const int N = 1000; char a[N]; void print() { for (int i = 1; i <= 2 * n; i++) cout << a[i]; } void dfs(int l, int r) { if (l == n && r == n) { if (first) { print(); first = false; } else { cout << ","; print(); } return; } if (l > n) return; if (r > n) return; if (r > l) return; a[l+r+1] = '('; dfs(l+1, r); a[l+r+1] = ')'; dfs(l, r+1); a[l+r+1] = '\0'; } int main() { scanf("%d", &n); dfs(0, 0); cout << endl; }
点赞 回复 分享
发布于 2018-03-29 21:37
一直不知道括号的字典序是什么
点赞 回复 分享
发布于 2018-03-29 21:38
在此统一回复 哦哦,好的,原来是我没写对,学习了,谢谢各位,
点赞 回复 分享
发布于 2018-03-29 21:38

相关推荐

10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务