目录
019:字符串中找出连续最长的数字串
020:岛屿数量
021:拼三角
019:字符串中找出连续最长的数字串
字符串中找出连续最长的数字串_牛客题霸_牛客网 (nowcoder.com)
题目:
题解:
边遍历边记下遇到的数字串,数字串中断时,更新ret为至今最长的字符串。
#include <iostream>
#include<string>
using namespace std;
string str,s,ret;
int main()
{cin>>str;int n=str.size();for(auto& ch:str){if(ch>='0' && ch<='9'){s+=ch;}else{if(ret.size()<s.size()){ret=s;}s="";}}if(ret.size()<s.size()) cout<<s<<endl;else cout<<ret<<endl;return 0;
}
020:岛屿数量
岛屿数量_牛客题霸_牛客网 (nowcoder.com)
题目:
题解:
多源BFS
class Solution {
public:int dx[4]={0,0,-1,1};int dy[4]={-1,1,0,0};bool vis[300][300];int m,n;int solve(vector<vector<char> >& grid) {m=grid.size(),n=grid[0].size();int ret=0;for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(grid[i][j]=='1' && !vis[i][j]){ret++;bfs(grid,i,j);}}}return ret;}void bfs(vector<vector<char>>& grid, int i,int j){queue<pair<int,int>> q;q.push({i,j});vis[i][j]=true;while(q.size()){auto [a,b]=q.front();q.pop();for(int k=0;k<4;k++){int x=a+dx[k],y=b+dy[k];if(x>=0 && x<m && y>=0 && y<n && grid[x][y]=='1' && !vis[x][y]){vis[x][y]=true;q.push({x,y});}}}}
};
021:拼三角
A-拼三角_牛客小白月赛32 (nowcoder.com)
题目:
题解:
1.枚举:排序后,将可能的三角形边长组合列出来,可以看出来,当枚举的几个例子满足后,其他几个例子同样满足,可以省去这些例子的判定。
#include <iostream>
#include<vector>
#include <algorithm>
using namespace std;
int t;
vector<int> arr(6);
int main()
{cin>>t;while(t--){for(int i=0;i<6;i++){cin>>arr[i];}sort(arr.begin(),arr.end());if(arr[0]+arr[1]>arr[2] && arr[3]+arr[4]>arr[5] ||arr[0]+arr[2]>arr[3] && arr[1]+arr[4]>arr[5] ||arr[0]+arr[3]>arr[4] && arr[1]+arr[2]>arr[5] ||arr[0]+arr[4]>arr[5] && arr[1]+arr[2]>arr[3]){cout<<"Yes"<<endl;}else cout<<"No"<<endl;}return 0;
}