注意:
1.使用strcpy是把右参数赋值给左参数,而且左参数必须有终止符'\0'。
2.注意当输入的字符串的最长连续数字串在最后时,此时就不会进行else的判断,需要出了while循环后再进行判断。
#include <iostream>
#include <string.h>
using namespace std;int cnt=0;
char str[100000];
char sum[100000];
int main()
{char a;int x=0;while (cin >>a) // 注意 while 处理多个 case{if(a>='0'&&a<='9'){str[x]=a;x++;}else{if(x>cnt){str[x]='\0';strcpy(sum,str);cnt=x;}memset(str,'a',sizeof(str));x=0;}}if(x>cnt){str[x]='\0';strcpy(sum,str);cnt=x;}for(int i=0; i<cnt; i++){//if(sum[i]>='0'&&sum[i]<='9')cout<<sum[i];}cout<<endl;
}
//深度优先搜索
思路:找到一个‘1’,就开始搜索,把周围上下左右的上下左右的上下左右......都变成‘0’。
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** 判断岛屿数量* @param grid char字符型vector<vector<>> * @return int整型*/void dfs(vector<vector<char> >& grid,int x,int y){int numr=grid.size();int numc=grid[0].size();grid[x][y]='0';int dexx[]={0,1,0,-1};int dexy[]={1,0,-1,0};for(int i=0;i<4;i++){int xx=x+dexx[i];int yy=y+dexy[i];if(xx>=0&&xx<numr&&yy>=0&&yy<numc&&grid[xx][yy]=='1'){dfs(grid,xx,yy);}} }int solve(vector<vector<char> >& grid) {// write code hereint numr=grid.size();int numc=grid[0].size();int sum=0;for(int i=0;i<numr;i++){for(int j=0;j<numc;j++){if(grid[i][j]=='1'){sum++;dfs(grid,i,j);}}}return sum;}
};
//注意使用该函数之前把数组sort一下。
#include <algorithm>
#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
int str[10];
int fun(int str[])
{if(((str[0]+str[1])>str[2])&&((str[0]+str[2])>str[1])&&((str[1]+str[2])>str[0])&&((str[3]+str[4])>str[5])&&((str[3]+str[5])>str[4])&&((str[4]+str[5])>str[3])&&((abs(str[0]-str[1]))<str[2])&&((abs(str[0]-str[2]))<str[1])&&((abs(str[1]-str[2]))<str[0])&&((abs(str[3]-str[4]))<str[5])&&((abs(str[3]-str[5]))<str[4])&&((abs(str[4]-str[5]))<str[3])){return 1;}else{return 0;}
}
int main() {int n;scanf("%d",&n);while(n--){for(int i=0;i<6;i++){int m;scanf("%d",&m);str[i]=m;}sort(str,str+6);int cnt=0;do {if(fun(str)){cnt=1;break;}}while (next_permutation(str, str+6));if(cnt==1)cout<<"Yes"<<endl;elsecout<<"No"<<endl;memset(str,'0',10);}
}