今天就看了搜索,图论根本不知道,搜索分为广搜bfs和深搜dfs,求最小步数涉及到最小时用的比较多,广搜是一层层的来,从初始状态开始,利用规则生成下一层,检查是否出现目标状态,用queue实现,取出(front)队头元素,删除(pop)队头元素,压入(push),直到找到目标状态(有解)或队列为空(无解),深搜时一条路走到黑,看是否符合目标状态,不符合回溯,有的需要回溯,有的不需要。

bfs:catch the cow

#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
const int inf=200005;
int v[inf],cnt;
void bfs(int n,int k)
{
    queue<int>q;
    q.push(n);//位置
    q.push(cnt);//步数
    v[n]=1;//是否遍历
    while(!q.empty())
    {
        n=q.front();
        q.pop();
        cnt=q.front();
        q.pop();
        if(n==k)//目标状态
            return;
        if(n-1>0&&!v[n-1])//规则
        {
            q.push(n-1);
            q.push(cnt+1);
            v[n-1]=1;
        }
        if(n+1<inf&&!v[n+1])
        {
            q.push(n+1);
            q.push(cnt+1);
            v[n+1]=1;
        }
        if(2*n<inf&&!v[2*n])
        {
            q.push(2*n);
            q.push(cnt+1);
            v[2*n]=1;
        }
    }
}
int main()
{
    int n,k;
    while(cin>>n>>k)
    {
        memset(v,0,sizeof(v));
        cnt=0;
        if(n>k)
            cout<<n-k<<endl;
        else
        {
            bfs(n,k);
            cout<<cnt<<endl;
        }
    }
}

dfs a knight's journey

#include<bits/stdc++.h>
using namespace std;
int v[27][27],p,q,flag;
//int dy[8]={2,2,1,-1,-2,-2,-1,1};
//int dx[8]={1,-1,-2,-2,-1,1,2,2};
int dx[8]={-1,1,-2,2,-2,2,-1,1};//由于按字典序(lexicographically)输出,所以在方向的时候不是随意写,按字典序走,dx就是表示行
int dy[8]={-2,-2,-1,-1,1,1,2,2};
//int dy[8]={-1,1,-2,2,-2,2,-1,1};
//int dx[8]={-2,-2,-1,-1,1,1,2,2};
int path1[26*26];
char path2[26*26];
bool island(int a,int b)
{
    if(a<0||a>=p||b<0||b>=q)//判断是否越界
        return true;
    return false;
}
void dfs(int x,int y,int num)//num步数
{
    path1[num]=x;path2[num]=y+'A';
    v[x][y]=1;
    if(num==p*q)
    {
        flag=1;
        return;
    }
    for(int i=0;i<8;i++)
    {
        if(island(x+dx[i],y+dy[i])) continue;
        if(v[x+dx[i]][y+dy[i]]) continue;
        v[x+dx[i]][y+dy[i]]=1;
        dfs(x+dx[i],y+dy[i],num+1);
        if(flag) return;
        else v[x+dx[i]][y+dy[i]]=0;//回溯
    }
}
int main()
{
    int t,i,j,k;
    cin>>t;
    for(i=1;i<=t;i++)
    {
        cin>>p>>q;
        flag=0;
        memset(v,0,sizeof(v));
        /*for(k=0;k<p;k++)
        {
            for(j=0;j<q;j++)
                {
                    dfs(k,j,1);
                 if(flag) break;
                }
                if(flag) break;;
        }*/字典序说以从左上角开始
        dfs(0,0,1);
    cout<<"Scenario #"<<i<<":"<<endl;
    if(flag)
    {
        for(j=1;j<=p*q;j++)
         {
             cout<<path2[j]<<path1[j]+1;
         }
         cout<<endl<<endl;
    }
    else
        cout<<"impossible"<<endl<<endl;
   }
}

dfs find the multiple

#include<bits/stdc++.h>
using namespace std;
int n,flag;
void dfs(long long a,int dep)
{
    if(flag) return;//保证输出一个
    if(a%n==0)
    {
        cout<<a<<endl;
         flag=1;
    }
    if(dep==19) return;//本来没写,如超出longlong范围就会出随机数
    dfs(a*10,dep+1);
    dfs(a*10+1,dep+1);
}
int main()
{
    while(cin>>n)
    {
        if(n==0) break;
        //cout<<dfs(1,1)<<endl;
        flag=0;
        dfs(1,1);
        //cout<<b<<endl;
    }
}

集训被虐第一天7.31相关推荐

  1. 项目使用ts辅助_我如何建立辅助项目并在第一周获得31,000名用户

    项目使用ts辅助 by Jurn W 由Jurn W 我如何建立辅助项目并在第一周获得31,000名用户 (How I Built my Side Project and Got 31,000 Use ...

  2. python程序开发入门_Python开发入门14天集训营-第一章

    python第一章 python变量 变量存储在内存中的值,数据是临时的.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. ...

  3. 福建省队集训被虐记——DAY3

    昨天没写--今天补上吧 一如既往的跪了 棋盘 [问题描述] 给出一个N*M的方格棋盘,每个格子里有一盏灯和一个开关,开始的时候,所有的灯都是关着的.用(x, y)表示第x行,y列的格子.(x, y)的 ...

  4. 中石油 暑期集训个人赛第一场 题解

    首先是签到题部分:A,E,I.    传送门:点击打开链接 然后是DP部分:C,G,H.        传送门:点击打开链接 还有其他:B,J,H,F. 神奇的B题(我的第一个一血) 问题 B: 拯救 ...

  5. 【2022寒假基础集训】第一场 - B.炸鸡块君与FIFA22【倍增DP+集合分类】

    Date:2022.04.27 题目描述: 热爱足球(仅限游戏)的炸鸡块君最近购买了FIFA22,并且沉迷于FIFA22的Rivals排位上分. 在该排位系统中,每局游戏可能有胜利(用W表示).失败( ...

  6. 福建省队集训被虐记——DAY1

    今天算是省冬的第一天--早上柯黑出题,说是"信心欢乐赛",其实是"使你失去信心.不再欢乐的比赛" 顺便orz一下来看这篇文章的各路神犇--求轻虐 水题 (py. ...

  7. 英雄算法联盟 - 六月集训排行榜 (截止今日第31天)

    文章目录 ▋ 积分排名 ▋ 涉及费用 ▋ 适宜人群 ▋ 训练时间 ▋ 如何参加 ▋ 训练程度 ▋ 详细介绍 ▋ 本群玩法 ▋ 本群闭环 ▋ 积分排名 排名 名字 积分 1 小星星[早起早睡版] 29 ...

  8. 北京集训:20180310

    北京集训的第一天,我完美爆零...... 这其中的经历,十分有趣呢. T1: 这题一看就是先猜一个性质然后利用他去求解. 如果我们知道怎么插入,怎么判定的话,可以线段树分治的说. 然后我猜了一个结论: ...

  9. oracle中季末最后一天,oracle有关时间计算,得到季度第一天、最后一天

    ------------------------------------------------ Oracle 日期------------------------------------------ ...

最新文章

  1. win7下安装rose
  2. 【译】Diving Into The Ethereum VM Part 4 - How To Decipher A Smart Contract Method Call
  3. hadoop streaming编程小demo(python版)
  4. php正则学习,php中正则表达式的学习及应用
  5. mysql-workbench 导入csv格式数据报错:Unhandled exception: Could not determine delimiter
  6. C++变量作用域、生存期、存储类别
  7. 程序入口地址的直接定制表【 (1) 清屏(2) 设置前景色 (3) 设置背景色 (4) 向上滚动一行】...
  8. Java Class对象
  9. android开发:NDK开发配置
  10. CSDN:2020年度CSDN博客之星评选竞赛——180号【一个处女座的程序猿】,感谢您,投上的宝贵一票,感谢!感恩!
  11. Python 导入包时报错 Traceback (most recent call last)
  12. 打工就是 “演戏”,你可以认真,但别太当真
  13. 网吧台式计算机配置,2017网吧电脑配置
  14. Mac OS 10.15 修改登录壁纸
  15. 中国科学院院士徐宗本:人工智能的基石是数学
  16. HTML利用posotion属性定位 小技巧
  17. 第6期(江西省吉安市永丰县)县长手机信箱工作简报(自吹自擂政绩,自圆其说)
  18. 超级计算机多层网络,超级计算机的多层架构抽象及描述
  19. 华擎主板设置来电开机_华擎主板设置来电开机_一块性价比超高的B550主板、华擎(ASRock)B550 Extreme4极限玩家主板 评测......
  20. 未来几年的IT发展方向-目前的趋势已经非常明朗

热门文章

  1. python培训班靠谱吗-quot;quot;经常看到的python培训机构排名靠谱嘛?应该如何选择培训机构?...
  2. python基础知识-python基础知识(一)
  3. python自学要多久-python从入门到精通需要多久?你需要先明白这两个点
  4. python编程教学软件-Python编程教学app
  5. python3入门代码-Python3 教程 | 菜鸟教程
  6. python安卓下载-python手册中文版apk下载
  7. python是什么软件-python是什么软件
  8. 基于单片机和语音识别的智能家电控制平台
  9. php使用jasperreport,用PHP访问JasperReport | 学步园
  10. egg风格 什么意思_egg框架学习笔记