字符串中找出连续最长的数字串
题目链接:字符串中找出连续最长的数字串_牛客题霸_牛客网 (nowcoder.com)
思路:字符串255长度 直接暴力即可 数组可开可不开。
AC code:
#include <asm-generic/errno.h>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
const int N = 300;
string a[N];
string g;
bool cmp(string a, string b)
{
return a.size() > b.size();
}
int main()
{
cin >> g;
int j = 0;
bool f = 0;
for(int i = 0; i < g.size(); i ++)
{
if(g[i] >= 48 && g[i] <= 57)
{
a[j] += g[i];
}
else j++;
}
sort(a, a + j + 1, cmp);
cout << a[0] << endl;
}
岛屿数量
思路:经典搜索题 不多解释 这里用的深搜。
AC code:
class Solution {
public:
int solve(vector<vector<char> >& grid)
{
int nr = grid.size();
if (nr == 0) return 0;
int nc = grid[0].size();
int num_islands = 0;
for (int r = 0; r < nr; ++r) {
for (int c = 0; c < nc; ++c) {
if (grid[r][c] == '1') {
++num_islands;
dfs(grid, r, c);
}
}
}
return num_islands;
}
void dfs(vector<vector<char> >& grid, int r, int c) {
int nr = grid.size();
int nc = grid[0].size();
if (r >= nr || c >= nc || grid[r][c] == '0' ) return ;
//搜索过的1,翻转为0, 防止重复计算
grid[r][c] = '0';
//上下左右,四个方向分别搜索
if ((r - 1) >= 0 && grid[r - 1][c] == '1') dfs(grid, r - 1, c);
if ((r + 1) < nr && grid[r + 1][c] == '1') dfs(grid, r + 1, c);
if ((c - 1) >= 0 && grid[r][c - 1] == '1') dfs(grid, r, c - 1);
if ((c + 1) < nc && grid[r][c + 1] == '1') dfs(grid, r, c + 1);
return ;
}
};
拼三角
题目链接:A-拼三角_牛客小白月赛32 (nowcoder.com)
思路:每组数据6个木棍 直接暴力 6^3 * 10^3 都不会超时 直接用全排列函数next_permutation即可
AC code:
# include <iostream>
# include <algorithm>
using namespace std;
int p[6];
int f=0;
int fun(int a,int b,int c)
{
if(a + b > c && a + c > b && b + c > a) return 1;
return 0;
}
int main()
{
int n;
cin>>n;
while( n --)
{
for(int i = 0; i < 6; i ++)
{
cin >> p[i];
}
sort(p,p+6);
do{
if(fun(p[0], p[1], p[2]) && fun(p[3], p[4], p[5]))
{
f=1;
break;
}
}while(next_permutation(p, p + 6));
if(f) cout << "Yes" << endl;
else cout << "No" << endl;
f=0;
}
return 0;
}