蛇形填数 c++ 面试题目

本文介绍了如何使用C++解决蛇形填数的面试题。作者在实践中遇到各种问题,通过细致编写代码,成功解决了蛇形排列的难题。核心思路是定义一个方向数组并检查边界条件,以确保正确填充数字。
摘要由CSDN通过智能技术生成

刷题,面试都遇到了好多关于蛇形填数的题,以前也做过,觉得没什么难度,只要自己仔细写的话都是没什么问题的,不过正经自己来写的话发现问题一大堆,于是今天进去写了一下。

主体思路就是,定义一个dir方向数组依次为右下左上,以及top,down,right,left这四个边界,当到达边界时dir++,具体看代码吧!

#include<bits/stdc++.h>
#define ll long long
#define qq printf("QAQ");
using namespace std;
const int maxn=1e5+5;
const int mod=1e9+7;
const int inf=0x3f3f3f3f;
vector<int> fun(vector<vector<int> >m)
{
    vector<int>ans;
    int t=0,d=m.size()-1,r=0,l=m[0].size()-1;
    int dir[4][2]= {0,1,1,0,0,-1,-1,0},nowdir=0,x=0,y=0;
    while(t<=d&&r<=l)
    {
        ans.push_back(m[x][y]);
        //if(x+dir[nowdir][0]>d||x+dir[nowdir][0]<t||y+dir[nowdir][1]>l||y+dir[nowdir][1]<r)
        {
            if(x+dir[nowdir][0]>d)//超出下边界,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值