滴滴 算法 821笔试

第一题 蛇形输出斐波那契数列 100%
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>

using namespace std;
bool inarea(int i , int j , vector<vector<long>>&res)
{
    return i >= 0 && i < res.size() && j >= 0 && j < res[0].size();
}


int main()
{
    int n; cin >> n;
    if(n == 1)
        {
            cout << 1 << endl;
            return 0;
        }
    vector<vector<long>>res(n,vector<long>(n,0));
    vector<long>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];
        }
    int count = n * n - 1;
    int i = 0, j = -1;
    vector<pair<int,int>>dir;
    dir.push_back({0,1});dir.push_back({1,0});dir.push_back({0,-1});dir.push_back({-1,0});
    int cur = 0;
    while(count >= 0)
        {
            while(1)
                {
                    if(inarea(i+dir[cur].first,j+dir[cur].second,res) && res[i+dir[cur].first][j+dir[cur].second] == 0)
                        {
                            
                            i += dir[cur].first;
                            j += dir[cur].second;
                            res[i][j] = dp[count];
                            break;
                        }
                    else
                        {
                            cur++;
                            cur = cur % 4;
                        }
                    
                }
            count --;
        }
    for(auto i : res)
        {
            for(auto j : i)
                {
                    cout << j << " ";
                }
            cout << endl;
        }
    return 0;
}
第二题 找CHINA个数 91%  最后突然意识到问题出在visit数组上,比如A在前一次遍历之后,下一个路径结束位点A可能和上一个相同,visit标记过的化会导致少计数一次
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>

using namespace std;

int res = 0;
string target = "CHINA";

bool inarea(vector<vector<char>>&num,int i, int j)
{
    return i >= 0 && i < num.size() && j >= 0 && j < num[0].size();
}

void dfs(vector<vector<char>>&num, int i, int j,vector<vector<char>>&visit,int index)
{
    if(!inarea(num,i,j)) return ;
    if(index == 4 && num[i][j] == target[index])
        {
            res++;
            return;
        }
    if(visit[i][j] == true) return;
    visit[i][j] = true;
    if(num[i][j] == target[index])
        {
            dfs(num,i,j+1,visit,index+1);
            dfs(num,i+1,j,visit,index+1);
            dfs(num,i,j-1,visit,index+1);
            dfs(num,i-1,j,visit,index+1);
        }
}
int main()
{
    int n;
    cin >> n;
    vector<vector<char>>num(n,vector<char>(n,'-1'));
    for(int i = 0; i < n; i++)
        {
            for(int j = 0; j < n; j++)
                {
                    cin >> num[i][j];
                }
        }
    for(int i = 0; i < n;i++)
        {
            for(int j = 0; j < n; j++)
                {

                    vector<vector<char>>visit(n,vector<char>(n,false));
                    dfs(num,i,j,visit,0);

                }
        }
    cout << res;

}



#笔试题目##滴滴#
全部评论
题目不一样... 我一个是斐波那契🐍一个是输出abc+acc
1 回复 分享
发布于 2020-08-21 20:57

相关推荐

工作基本定了,比较满意。这深度学习真是难搞啊,论文看不懂,代码看不懂,不会改,创新点???&nbsp;还有一个月中期,怎么搞,已经抑郁了,没有小论文要求,我真是非常幸运了,不然就我这科研能力…………&nbsp;感觉自己对自己失去信心,无时无刻不在否定自己取得一些成绩都是运气好罢了,真的能顺利毕业吗?严重内耗、无力感爆棚啊…………
AI牛可乐:哎呀,听起来你最近压力好大呀,毕业论文和工作的双重压力一定让你感觉像是背了两座山呢。深度学习确实挺复杂的,就像是要在一片迷雾中找到出路一样。但是,你已经很棒了,工作都定好了,这是很大的成就呢! 论文的事情,别太担心。每个人都有看不懂代码和论文的时候,这是正常的。至于创新点嘛,有时候灵感就像小猫一样,需要一点一点地哄出来的。你可以先试试把你看过的资料整理一下,说不定就能找到新的思路呢。 中期答辩前,你可以列个计划,一步一步来,把大问题分解成小问题,一点一点克服。记得,你不是一个人在战斗,你的导师、同学都是你的战友哦。 至于信心嘛,别否定自己,每个人都会有低谷的时候。你已经取得的成绩,都是你实力的体现。毕业不是问题,只要你不放弃,就一定能顺利走过去的。加油哦,我相信你可以的! 对了,如果你愿意的话,可以点击我的头像,我们私信聊,也许我能帮你出出主意,或者就是简单地聊聊天,分散一下你的注意力也好呀。🐮💪🌟
点赞 评论 收藏
分享
点赞 评论 收藏
分享
想去夏威夷的小哥哥在度假:5和6才是重点
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务