PS: 2020的是夏令营试题
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
3 3
0 1 0
1 2 1
0 1 1
输出: 2
2 3
1 0 0
0 0 2
输出: False
#include <iostream> #include <queue> using namespace std; int main() { int m, n; while (cin >> m >> n) { int arr[m][n]; int temp = 0; queue<int> qx, qy; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cin >> arr[i][j]; if(arr[i][j] == 2) { qx.push(i); qy.push(j); } if(arr[i][j] == 1) temp++; } } int sec = 0; while(!qx.empty() && temp) { int size = qx.size(); int dir[5] = {1, 0, -1, 0, 1}; while(size--) { int x = qx.front(); int y = qy.front(); qx.pop(); qy.pop(); for(int i = 0; i < 4; i++) { int dx = x + dir[i]; int dy = y + dir[i + 1]; if(dx < 0 || dx >= m || dy < 0 || dy >= n || arr[dx][dy] != 1) continue; else { arr[dx][dy] = 2; temp--; qx.push(dx); qy.push(dy); } } } sec++; } if (temp) cout << "False" << endl; else cout << sec << endl; } return 0; }
2、输入三个字符串,问第三个字符串能否由前两个字符串多次重复组合形成。如果能,则输出前两个字符串各自的使用次数;如果不能,则输出 FALSE。
输入:三个字符串
输出:前两个字符串各自的次数 或 FALSE
输入: aa bb bbaaaabbaa
输出: 3 2
输入: ab ba abbaaabaab
输出: FALSE
(注意特殊用例: aa aab aabaa 故递归)
#include <iostream> #include <queue> using namespace std; queue<string> st; bool sub(string s1, string s, int n) { return s.substr(n, s1.length()) == s1; } bool issub(string s1, string s2, string s, int p, int rem) { if(p == s.length() && rem == 0) return true; if(sub(s1, s, p) && sub(s2, s, p)) st.push(s.substr(p, rem)); if(sub(s1, s, p)) { rem -= s1.length(); p += s1.length(); issub(s1, s2, s, p, rem); } if(sub(s2, st.front(), p)) { st.pop(); rem -= s2.length(); p += s2.length(); issub(s1, s2, s, p, rem); } return true; } int main() { string s1, s2, s; while(cin >> s1 >> s2 >> s) { int l = s.length(); cout << issub(s1, s2, s, 0, l); } return 0; }
PS: 暂时是更新完了,综合面试也是一个大头,都抓紧吧,尽量不手生,多看 多练 加油!!!! Fighting!!! (别忘了前面未完善的!!)
原文地址:https://www.cnblogs.com/ache/p/12630070.html
时间: 2024-10-05 17:09:45