什么是网络营销?它的内涵包括哪几个层次?谷歌seo工具
目录
- 1.字符串中找出连续最长的数字串 (pass)
- 1.1 解析
- 1.2 代码
- 2.岛屿数量 (pass)
- 2.1 解析
- 2.2 代码
- 3.拼三角
- 3.1 解析
- 3.2 代码
1.字符串中找出连续最长的数字串 (pass)
字符串中找出连续最长的数字串
技能:枚举、字符串、双指针
1.1 解析
1.2 代码
#include <iostream>
#include <string>
using namespace std;int main()
{string s;cin>>s;int begin=-1,len=0;for(int i=0;i<s.size();i++){if(s[i]>='0'&&s[i]<='9')//找到第一个数字的位置{int j=i+1;while(j<s.size()&&s[j]>='0'&&s[j]<='9')j++;if(len<j-i)//更新长度{len=j-i;begin=i;}i=j;//更新下标}}cout<<s.substr(begin,len);return 0;
}
2.岛屿数量 (pass)
岛屿数量
技能:dfs/bfs
2.1 解析
2.2 代码
int dx[4]={1,-1,0,0};int dy[4]={0,0,-1,1};vector<vector<bool>> vis;int m,n,ret=0;void dfs(vector<vector<char>>& grid,int i,int j){vis[i][j]=true;for(int k=0;k<4;k++){int x=i+dx[k],y=j+dy[k];if(x>=0&&x<m&&y>=0&&y<n&&grid[x][y]=='1'&&!vis[x][y])dfs(grid,x,y);}}int solve(vector<vector<char> >& grid) {m=grid.size(),n=grid[0].size();vis=vector<vector<bool>>(m,vector<bool>(n));for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(grid[i][j]=='1'&&!vis[i][j]){ret++;dfs(grid,i,j);}}}return ret;}
3.拼三角
拼三角
技能:枚举
3.1 解析
3.2 代码
//1.三重循环
int main()
{int t=0;cin>>t;int nums[6]={0};while(t--){int flag=0;//标记位for(int i=0;i<6;i++)cin>>nums[i];sort(nums,nums+6);for(int i=0;i<4;i++){for(int j=i+1;j<5;j++){for(int k=j+1;k<6;k++){if(nums[i]+nums[j]>nums[k])//组成三角形成功{int a=0,b=0,c=0;int t1=nums[i],t2=nums[j],t3=nums[k];nums[i]=nums[j]=nums[k]=0;for(auto& x:nums){if(a==0&&x)a=x;else if(b==0&&x)b=x;else if(c==0&&x)c=x;}if(a+b>c){flag=1;cout<<"Yes"<<endl;break;}//恢复线程nums[i]=t1,nums[j]=t2,nums[k]=t3;}}if(flag==1)break;}if(flag==1)break;}if(flag==0)cout<<"No"<<endl;}return 0;
}//2.优化后的枚举
int nums[6];
int main()
{int t=0;cin>>t;while(t--){for(int i=0;i<6;i++) cin>>nums[i];sort(nums,nums+6);if(nums[0]+nums[1]>nums[2]&&nums[3]+nums[4]>nums[5]||nums[0]+nums[2]>nums[3]&&nums[1]+nums[4]>nums[5]||nums[0]+nums[3]>nums[4]&&nums[1]+nums[2]>nums[5]||nums[0]+nums[4]>nums[5]&&nums[1]+nums[2]>nums[3])cout<<"Yes"<<endl;else cout<<"No"<<endl;}return 0;
}