题解 | # C 忽远忽近的距离#2023牛客寒假算法基础集训营3

忽远忽近的距离

https://ac.nowcoder.com/acm/contest/46811/C

C 忽远忽近的距离

队友的解法

看着像是枚举4种情况(-3,-2,2,3)

但代码逻辑(那个循环)那块没看懂,有没有大佬解答一下

#include <bits/stdc++.h>
using namespace std;
int a[100005]={0};
bool select(int n,int m,int a[n]){
    int p[] = {-3,-2,2,3};
    if (m == n) {
        return true;
    }
    for (int i=0;i<4;i++){
        if (m+p[i]>=0 && m+p[i]<n && a[m+p[i]] == 0){
            a[m + p[i]] = m + 1;
            if (select(n,m+1,a)) {
                return true;
            }
            a[m+p[i]]=0;//行不通
        }
    }
    return false;
}
int main(){
    int n;
    cin>>n;
    if (select(n,0,a)){
        for (int i=0;i<n;i++){
            cout<<a[i]<<" ";
        }
    }else{
        cout<<"-1";
    }  
}
编程比赛题解 文章被收录于专栏

各类编程比赛题解

全部评论
好理解的写法是可以发现4 5 6都可以 所以只要是大于3 其他情况去凑就行了 凑不出来就不行
点赞 回复 分享
发布于 2023-01-20 21:48 湖南

相关推荐

03-25 19:00
东北大学 Java
程序员牛肉:太好了,是聊天记录。不得不信了。 当个乐子看就好,不要散播焦虑
点赞 评论 收藏
分享
求面试求offer啊啊啊啊:这个在牛客不是老熟人了吗
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务