滴滴 测开笔试 8月21日 编程求解答

今晚的编程被虐到了,两道题很简单,感觉写的也没错,但是就是过不了,求大神们帮忙看看哪里有问题😂😂😂
题目1:小小X调高和跳远,求小小X的最好成绩和最坏成绩
输入:参加比赛的人数N,第一行是跳远成绩由高到低,第二行是跳高成绩由高到低
我的代码:通过率只有55%,
#include <iostream>
#include <vector>
#include <set>

using namespace std;
int main(){
    int n;
    while(cin>>n){
        vector<char> str1(n);
        vector<char> str2(n);
        for(int i=0;i<n;i++)
            cin>>str1[i];
        for(int i=0;i<n;i++)
            cin>>str2[i];
        set<char> before;//记录第一行成绩中在小小x前面的
        set<char> after;//记录第一行成绩中在小小x后面的
        int i=0;
        while(i<str1.size()&&str1[i]!='X'){
            before.insert(str1[i]);
            i++;
        }
        i++;//跳过小小x
        while(i<str1.size()){
            after.insert(str1[i]);
            i++;
        }
        int j=0;
        int good=0;
        while(j<str2.size()&&str2[j]!='X'){
            if(before.count(str2[j]))
                good++;
            j++;
        }
        j++;//跳过小小x
                int bad=0;
        while(j<str2.size()){
            if(after.count(str2[j]))
                bad++;
            j++;
        }
        cout<<good+1<<' '<<n-bad<<endl;
    }
    return 0;
}        
题目2:斐波那契蛇
输入:n
输出:n*n的数组,要求从第一行第一列开始,按照顺时针数组遍历形成一个逆序的斐波那契数列,
我的代码:通过率更少,9%
#include <iostream>
#include <vector>

using namespace std;
int main(){
    int n;
    while(cin>>n){
        vector<int> dp(n*n,0);
        dp[0]=1;
        dp[1]=1;
        for(int i=2;i<n*n;i++)
            dp[i]=dp[i-1]+dp[i-2];
        
        vector<vector<int>> matrix(n,vector<int>(n,0));
        vector<vector<bool>> visited(n,vector<bool>(n,false));
        int d[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
        int di=0;
        int r=0;
        int c=0;
        for(int i=n*n-1;i>=0;i--){
            matrix[r][c]=dp[i];
            visited[r][c]=true;
            int tmpr=r+d[di][0];
            int tmpc=c+d[di][1];
            if(tmpr>=0 && tmpr<n && tmpc>=0 && tmpc<n && !visited[tmpr][tmpc]){
                r+=d[di][0];
                c+=d[di][1];
            }else{
                di=(di+1)%4;
                r+=d[di][0];
                c+=d[di][1];
            }
        }
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                if(j!=n-1)
                    cout<<matrix[i][j]<<' ';
                else
                    cout<<matrix[i][j]<<endl;
            }
        }
    }
    return 0;
}

如上,改了40多分钟,实在是找不到错在哪里了,简单的题目都AC不了真的心态很爆炸。求大神们帮帮忙,看看哪里有问题,让我吃一堑长一智🤣🤣🤣
#笔试题目##滴滴#
全部评论
第一次主要是输入输出不对吧,直接 cin >> n 就行了 不需要while 读入
1 回复 分享
发布于 2020-08-22 09:14
你第六行的main函数过不了编译吧
点赞 回复 分享
发布于 2020-08-22 09:13
我发了个帖子 有全ac的代码 你可以看看 我明天早上看看你的问题在哪
点赞 回复 分享
发布于 2020-08-21 22:42
第二题c++的话用int会溢出,代码逻辑没细看
点赞 回复 分享
发布于 2020-08-21 22:26
------- python -------- 无代码高亮🤦‍ ------- def solve2():     n = int(sys.stdin.readline().strip())     snake, size = [1,1, 2], n * n     while len(snake) < size:         num = snake[-2] + snake[-1]         snake.append(num)     snake = snake[::-1]     matrix = [[1] * n for _ in range(n)]     x, y = 0, 0     i, start, end = n, 0, 0     while i > 0:         end = start + i * 2 + ( i - 2) * 2          helper(matrix, x, y, i, snake[start: end])         x, y, start = x + 1, y + 1, end         i -= 2     for row in matrix:         print( " ".join([str(_) for _ in row ] ) )          def helper(matrix, x, y, n, nums):     indexes = []     indexes.extend( [ (x,b) for b in range(y, y+n-1) ] )     indexes.extend( [ (a,y+n-1) for a in range(x, x+n-1)] )     indexes.extend( [ (x+n-1, b) for b in range(y+n-1, y, -1)])     indexes.extend( [(a, y) for a in range(x+n-1, x, -1) ])     i = 0     for a, b in indexes:         matrix[a][b] = nums[i]         i += 1
点赞 回复 分享
发布于 2020-08-21 22:21
我是后端,第一个题目不一样,我们是求数字和的用暴力解决比较简单;第二个题目一样,我没用动态规划,用的迭代方法,就是先填一圈,再填里面一圈,有点手动化🤣 -------------------------------- 代码超字数了,看下一个回复‍
点赞 回复 分享
发布于 2020-08-21 22:18

相关推荐

2025-12-19 15:17
门头沟学院 Java
27届中九本,目前陆陆续续也面了很多家厂了,大厂面了字节、腾讯、虾皮还有几家中小厂,全是一面挂,只有字节进二面,二面也是秒挂了。知道自己能力很差,基本上大厂面试题只要问题不是八股文,出一些场景题或者真实情况下的一些问题就不太答得上来,我感觉大多数面试官看我项目都是学习性质的项目没有部署上线,也没有面对真实场景好像就对我的项目没啥兴趣了,项目也不太拷打,就问几个简单的八股或者直接另出一个系统设计题(比如字节、虾皮),有一家中厂问的八股啥的还让我介绍项目重点,我就介绍然后正常回答八股,他也不追问,但是莫名就是一面挂了,也想问问大家有什么星球上的项目推荐嘛。目前项目就是一个点评魔改加一个图库烂大街,昨天面的腾讯的面试官人很好,也给我指出了一些建议,希望我深耕一些技术的实际场景不要堆砌中间件还要加深计算机基础知识的学习。因为楼主不是科班的,数据结构因为学过,Hot100也刷烂了,算法只要不是很难问题应该不大,但是计算机网络操作系统完全没学过,面腾讯和虾皮的时候完全不会被拷打了,感觉这些知识也不好速成,加上最近要期末考试了,学习技术的时间也要压缩分担给课上突击一下期末。想先沉淀半个多月,度过期末再做个项目之后继续投,想问一下各位大佬有什么意见?真的有点迷茫,感觉还要学好多才能达到找实习的水平,如果一月还找不到就打算考研了,那些真实场景确实没有接触过考虑不到,但是我都没有工作经验感觉很难锻炼这方面,也想问问大家该怎么提高这种真实场景思维,谢谢各位佬。
纳斯卡可:哥们大厂不要乱面啊,这些都是有面评的。你下次再想去面试都不会给你约了
点赞 评论 收藏
分享
程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务