飞行员兄弟

飞行员兄弟

思路:

这里一共有16个格子,如果暴力的话也就是2^16次方种排列组合。

这题和之前的开关不一样,这题是会影响到周围很多格子,而开关那题可以利用上方只改变一个的操作来解题,这题我想到的就是暴搜:

每一个格子都有两种选择 1.操作 2.不操作

我们遍历每一种情况,看能否找到答案即可。

cpp 复制代码
#include<iostream>
#include<vector>
using namespace std;
vector<pair<int,int>>res;
vector<pair<int,int>>now;
char g[5][5];

void turn_one(int x, int y)
{
    if (g[x][y] == '+') g[x][y] = '-';
    else g[x][y] = '+';
}

void turn_all(int x, int y)
{
    for (int i = 0; i < 4; i++)
    {
        turn_one(x, i);
        turn_one(i, y);
    }
    turn_one(x, y);
}

bool Check()
{
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            if (g[i][j] == '+') return false;
        }
    }
    return true;
}

void dfs(int x,int y)
{
    //递归出口
    if(x==3&&y==4)
    {
        if(Check())
        {
            //判断是否需要更新路径
            if(res.empty()||(res.size()<now.size()))
            {
                res=now;
            }
        }
        return;
    }
    
    //控制边界
    if(y==4)
    {
        x+=1;
        y=0;
    }
    
    //开始递归
    //1.操作
    now.push_back({x,y});
    turn_all(x,y);
    dfs(x,y+1);
    turn_all(x,y);
    now.pop_back();
    
    //2.不操作
    dfs(x,y+1);
}

int main(void)
{
    for(int i=0;i<4;i++) cin>>g[i];
    
    dfs(0,0);
    
    printf("%d\n",res.size());
    //输出答案
    for(int i=0;i<res.size();i++)
    {
        printf("%d %d\n",res[i].first+1,res[i].second+1);
    }
    return 0;
}

加粗样式

相关推荐
.千余2 小时前
【C++】C++继承入门(下):友元、静态成员与菱形继承的底层逻辑
开发语言·c++·笔记·学习·其他
初中就开始混世的大魔王2 小时前
6 Fast DDS-传输层
开发语言·c++·中间件·信息与通信
退休倒计时2 小时前
【每日一题】LeetCode 142. 环形链表 II TypeScript
算法·leetcode·链表·typescript
popcorn_min3 小时前
Digits 手写数字识别:随机森林多分类 + 像素级特征热力图
算法·随机森林·分类
liulilittle3 小时前
拥塞控制:排水终止的两种决策:OR 与 AND
网络·tcp/ip·计算机网络·算法·信息与通信·tcp·通信
weixin_307779134 小时前
从脚本执行到智能体协作:AI辅助测试能力的范式重构
运维·开发语言·人工智能·算法·测试用例
量化君也4 小时前
从回测到全自动实盘交易,全天候策略需要经历哪些改造?
大数据·人工智能·python·算法·金融
代码中介商4 小时前
C++ 智能指针完全指南(三):weak_ptr 与循环引用
开发语言·c++
fox_lht4 小时前
第十五章 函数式语言:迭代器和闭包
开发语言·后端·学习·算法·rust
BestOrNothing_20154 小时前
ROS2 C++ 小车控制完整实战(二):自定义 msg 消息发布与订阅保姆级教程
c++·ros2·subscriber·publisher·msg·topic通信·自定义接口