题目:

1.

给你一个 m*n 大小的矩阵,每个点有 0,1,2 三种取值;0 代表障碍物,1代表白纸,2 代表墨滴。每一秒墨滴可以向其上下左右扩散,将四周的白纸染色,被染色之后的白纸可以继续向四周扩散,以此类推。问经过几秒,矩阵中所有的白纸都被染色。
如果可以,则输出扩散时间;
如果不可以,则输出FALSE。
输入: m n 的大小以及矩阵每个点的值
输出: 扩散时间 或 FALSE
例如:
3 3
0 1 0
1 2 1
0 1 0
输出: 1

写的有点繁琐了

#include<iostream>
#include<string>
#include<queue>
using namespace std;struct point{int x,y;int time; //染成红色的时间 point(int x,int y,int time=0):x(x),y(y),time(time){}
};queue<point> que;
int a[100][100];
int m,n;
int num1=0;bool hefa(int x,int y)
{if(x>=0&&y>=0&&x<m&&y<n)return true;return false;
}int ranse(int x,int y,int t)
{int time = t;if(hefa(x-1,y) && a[x-1][y] == 1){a[x-1][y] = 2;num1--;time = t+1;que.push(point(x-1,y,time));}if(hefa(x,y-1) && a[x][y-1] == 1){a[x][y-1] = 2;num1--;time=t+1;que.push(point(x,y-1,time));}if(hefa(x+1,y) && a[x+1][y] == 1){a[x+1][y] = 2;num1--;time=t+1;que.push(point(x+1,y,time));}if(hefa(x,y+1) && a[x][y+1] == 1){a[x][y+1] = 2;num1--;time=t+1;que.push(point(x,y+1,time));}return time;
}   int bfs()
{int ans = 0;while(!que.empty()){point t = que.front();que.pop();ans = ranse(t.x,t.y,t.time);}if(num1 == 0)cout << ans << endl;else cout << "FALSE" << endl;
}int main()
{cin >> m >> n;for(int i=0;i<m;i++){for(int j=0;j<n;j++){cin >> a[i][j];if(a[i][j] == 2)que.push(point(i,j));if(a[i][j] == 1)num1++;}}bfs();
}

2.

输入三个字符串,问第三个字符串能否由前两个字符串多次重复组合形成。如果能,则输出前两个字符串各自的使用次数;如果不能,则输出 FALSE。
输入:三个字符串
输出:前两个字符串各自的次数 或 FALSE
输入: aa bb bbaaaabbaa
输出: 3 2
输入: ab ba abbaaabaab
输出: FALSE
(需要考虑拥有相同前缀的时候)

随手写了两个dfs,只有细微差别

#include<iostream>
#include<string>
using namespace std;string a,b,r;
int num1=0;
int num2=0;
bool flag = 0;void dfs(string r)
{//cout << "dfs----string:" << r << " a=" << num1 << " b=" << num2 << endl;if(r.length()==0){cout << num1 << ' ' << num2 << endl;flag = 1;return;}int i = r.find(a);int j = r.find(b);if(i == 0){num1++;string rr = r.substr(a.length(),r.length()-a.length());dfs(rr);num1--;}if(j == 0){num2++;string rr = r.substr(b.length(),r.length()-b.length());dfs(rr);num2--;}
}int main()
{//aa aab aaaabaaaabaabaacin >> a >> b >> r;dfs(r); if(!flag)cout << "FALSE" << endl;
}
#include<iostream>
#include<string>
using namespace std;string a,b,r;
bool flag = 0;void dfs(int num_a,int num_b,int start)
{//cout << "dfs----start=" << start << " a=" << num_a << " b=" << num_b << endl;if(start == r.length()){cout << num_a << ' ' << num_b << endl;return;}int i = r.find(a,start);int j = r.find(b,start);if(i == start)dfs(num_a+1, num_b, start+a.length());if(j == start)dfs(num_a, num_b+1, start+b.length());}int main()
{   //aa aab aaaabaaaabaabaacin >> a >> b >> r;dfs(0,0,0);if(!flag)cout << "FALSE" << endl;
}

2020北理工夏令营机试相关推荐

  1. 2019北理工夏令营机试

    2019北理工计算机夏令营机试 今年北理工计算机夏令营一共两道机试题,上机环境为dev c++,支持STL和C++11.测试为黑盒测试,即老师给你一张纸,每个题输入上面的三个样例,根据通过的数目给分. ...

  2. 2020北航计算机夏令营机试题目讲解

    一.二叉树(60分)   给你一个整数序列,用这些数构成一个完全二叉排序树,输出此二叉树的层序遍历序列.   输入的第一行是一个整数n,表示这个整数序列的长度,输入的第二行包含n个整数,每个数代表完全 ...

  3. 2020北航计算机夏令营机试题目个人理解

    一.二叉树(60分) 给你一个整数序列,用这些数构成一个完全二叉排序树,输出此二叉树的层序遍历序列.输入的第一行是一个整数n,表示这个整数序列的长度,输入的第二行包含n个整数,每个数代表完全二叉排序树 ...

  4. 2020清华大学计算机系夏令营机试

  5. 华东师范大学数据学院2020夏令营机试题解

    华东师范大学数据科学与工程学院第八届"云计算与大数据"夏令营机试时间是8:30-11:30,共6道题,在陆老师负责的学院自己的OJ平台上进行.OJ平台使用体验良好. A.排序 给一 ...

  6. 2019中国科大夏令营机试

    2019中科大计算机夏令营机试 今年是中科大计算机夏令营第一次增加上机考试,而且在离开营一个星期的时候才进行通知.极其短暂的准备时间,加上未知的不确定性,还是带来了不小的挑战.听学长说前些年科大夏令营 ...

  7. 2018南京大学计算机夏令营机试

    1. Count number of binary strings without consecutive 1's Given a positive integer n(3≤n≤90), count ...

  8. 中科大计算机科学夏令营,2019中科大计算机夏令营机试

    2019中科大计算机夏令营机试 今年是中科大计算机夏令营第一次增加上机考试,而且在离开营一个星期的时候才进行通知.极其短暂的准备时间,加上未知的不确定性,还是带来了不小的挑战.听学长说前些年科大夏令营 ...

  9. 2018年北京理工大学计算机学院保研夏令营机试A组

    1.第一个题是输入一串随机的数,用逗号隔开.如果有重复的树就输出最靠后的一个,没有重复的就输出-1. 如输入:1,2,3,4,4,3,2,1     输出:1 输入:1,2,3,4,5,6,7,8   ...

  10. 2020复旦大学计算机夏令营机试题

    2020复旦大学计算机夏令营机试题 这个是开卷编程,不计入成绩,但是面试会问你做的情况.

最新文章

  1. vscode 无法跳转到函数定义_玩转VS Code
  2. 由 粗 到 精 学 习 LVI-SAM: imageProjection模块
  3. 插入10000条数据测试DB性能
  4. python是基于什么语言开发-python是哪个国家的人开发的语言
  5. python地图 两点距离_使用Python调用百度地图Api获取两地距离
  6. 首款鸿蒙系统终端n,首款搭载华为鸿蒙系统终端来了!荣耀智慧屏正式发布,3799元起售...
  7. c3d怎么调语言,falc3d参数调整心得
  8. Ubuntu 14.10 下安装java反编译工具 jd-gui
  9. xml中的if和截取字符串
  10. 基于pyqt5的Demo软件开发
  11. 微机实验报告7 定时/计数器应用实验
  12. 【CSDN软件工程师能力认证学习精选】Python网络编程之初识
  13. java 获取汉字拼音_java springboot中获取汉字拼音
  14. 【PS4开发】如何通过unity3d发布ps4应用
  15. CUDA优化LBP(loopy belief propegation)
  16. linux 切换左右声道,linux下怎么把数据分别给左右声道
  17. eja变送器故障代码al01_EJA的差压变送器三种常见故障
  18. 后腰椎间盘突出时期的生活
  19. 理解ASAN的shadow memory和读懂报错信息
  20. SDK 的下载及安装教程

热门文章

  1. The Unsolvable Problem
  2. discuz x2.5 广告位开发学习(第一步:摸索)
  3. HCIE Security AC访客管理和终端安全 备考笔记(幕布)
  4. wireshark 突然抓不到VMware接口的包记录
  5. 【翻译】GRAIL-手写识别
  6. 在RedHat5中实现透明代理
  7. 自己实践的mac安装python3Linux安装python3
  8. C++实现LRU(Least-Recently Used)缓存算法
  9. 键盘拆开重新安装步骤_机械键盘小白入门工具
  10. 大学计算机应用基础教程第三章,计算机应用基础教程 李健苹 计算机应用基础教程 第3章...