• 个人简介

    基础广搜判断能否到达目的地 0

    #include<iostream>
    #include<queue>
    using namespace std;
    char mp[105][105];
    int fx[]={-1,1,0,0},fy[]={0,0,-1,1},n,bx,by,ex,ey,m;
    bool mk[105][105];
    struct Node{
    	int x,y;
    };
    bool bfs(){
    	queue<Node> q;
    	q.push({bx,by});
    	while(q.size()){
    		Node t=q.front();
    		q.pop();
    		if(t.x==ex&&t.y==ey){
    			return true;
    		}
    		for(int i=0;i<4;i++){
    			int nx=t.x+fx[i];
    			int ny=t.y+fy[i];
    			if(nx<1||nx>n||ny<1||ny>m||mp[nx][ny]==1||mk[nx][ny]){
    				continue;
    			}
    			q.push({nx,ny});
    			mk[nx][ny]=1;
    		}
    	}
    	return false;
    }
    int main(){
    	cin>>n>>m;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			cin>>mp[i][j];
    			if(mp[i][j]=='g'){
    				bx=i;
    				by=j;
    			}
    			if(mp[i][j]=='s'){
    				ex=i;
    				ey=j;
    			}
    			if(mp[i][j]=='#'){
    				mk[i][j]=1;
    			}
    		}
    	}
    	if(bfs()){
    		cout<<"Yes";
    	} 
    	else{
    		cout<<"No";
    	}
    	return 0;
    }
    

    0

    #include<iostream>
    #include<queue>
    using namespace std;
    char mp[105][105];
    int fx[]={-1,1,0,0},fy[]={0,0,-1,1},n,bx,by,m,sum=0;
    bool mk[105][105];
    struct Node{
    	int x,y;
    };
    bool bfs(){
    	queue<Node> q;
    	q.push({bx,by});
    	while(q.size()){
    		Node t=q.front();
    		q.pop();
    		for(int i=0;i<4;i++){
    			int nx=t.x+fx[i];
    			int ny=t.y+fy[i];
    			if(nx<1||nx>n||ny<1||ny>m||mp[nx][ny]=='0'||mk[nx][ny]==0){//由于一开始将是细胞的单位当为无细胞所以出错 
    				continue;
    			}
    			if(mk[nx][ny]==1){
    				q.push({nx,ny});
    				mk[nx][ny]=0;
    			}
    			
    		}
    	}  
    }
    int main(){
    	cin>>n>>m;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			cin>>mp[i][j];
    			if(mp[i][j]!='0'){``
    				mk[i][j]=1;
    				mp[i][j]='1';
    			}
    		}
    	}
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			bx=i;
    			by=j;
    			if(mk[i][j]==1){
    				sum++;
    				mk[bx][by]=0;//将输入起点当作了标记起点 
    				bfs();
    			}
    		}
    	}
    	cout<<sum;
    	return 0;
    }
    

    0

    #include<iostream>
    #include<queue>
    using namespace std;
    char mp[1005][1005];
    int fx[]={-1,1,0,0},fy[]={0,0,-1,1},n,bx,by,ex,ey,my[1000][1000];
    int mk[1000][1000];
    struct Node{
    	int x,y;
    };
    bool bfs(){
    	queue<Node> q;
    	q.push({bx,by});
    	while(q.size()){
    		Node t=q.front();
    		q.pop();
    		if(t.x==ex&&t.y==ey){
    			return my[ex][ey];
    		}
    		for(int i=0;i<4;i++){
    			
    			int nx=t.x+fx[i];
    			int ny=t.y+fy[i];
    			if(nx<1||nx>n||ny<1||ny>n||mk[nx][ny]){
    				continue;
    			}
    			q.push({nx,ny});
    			mk[nx][ny]=1;
    			my[nx][ny]=my[t.x][t.y]+1;
    		}
    	}
    	
    }
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=n;j++){
    			cin>>mp[i][j];
    

    1

    if(mp[i][j]=='1'){
    			mk[i][j]=1;
    		}
    	}
    }
    cin>>bx>>by>>ex>>ey;
    my[bx][by]=1;
    mp[bx][by]=1;
    bfs();
    cout<<my[ex][ey]-1;
    return 0;
    

    } 2

    #include<iostream>
    #include<queue>
    #include<iomanip>
    using namespace std;
    int n,m,bx,by,mp[1000][1000],my[1000][1000],fx[100]={-2,-2,-1,+1,+2,+2,-1,+1},fy[100]={-1,+1,+2,+2,-1,+1,-2,-2};
    struct Node{
    	int x,y;
    };
    int bfs(){
    	queue<Node> q;
    	q.push({bx,by});
    	mp[bx][by]=1;
    	while(q.size()){
    		Node t=q.front();
    		q.pop();
    		for(int i=0;i<8;i++){
    			int nx=t.x+fx[i];
    			int ny=t.y+fy[i];
    			if(nx<1||nx>n||ny<1||ny>m||mp[nx][ny]){
    				continue;
    			}
    			q.push({nx,ny});
    			mp[nx][ny]=1;
    			my[nx][ny]=my[t.x][t.y]+1;
    		}
    	}
    }
    int main(){
    	cin>>n>>m>>bx>>by;
    	my[bx][by]=1;
    	bfs();
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			printf("%-5d",my[i][j]-1);
    		}
    		cout<<endl;
    	}
    	return 0;
    }
    

    5

    #include<bits/stdc++.h>
    using namespace std;
    int n,a,b,h[100000],m[100000],c[100000];
    int bfs(){
    	queue<int> q;
    	q.push(a);
    	m[a]=1;
    	while(q.size()){
    		int x=q.front();
    		q.pop();
    		if(x==b){
    			return true;
    		}
    		int as[3]={0-h[x],h[x]};
    		for(int i=0;i<2;i++){
    			int po=x+as[i];
    			if(po<1||po>n||m[po]==1){
    				continue;
    			}
    			q.push(po);
    			m[po]=1;
    			c[po]=c[x]+1;
    		}
    	}
    	return false;
    }
    int main(){
    	cin>>n>>a>>b;
    	for(int i=1;i<=n;i++){
    		cin>>h[i];
    	}
    	if(bfs()){
    		cout<<c[b];
    	}
    	else{
    		cout<<-1;
    	}
    	return 0;
    }
    
    #include<iostream>
    using namespace std;
    int mp[1000][1000],flag=0,fx[10000]={-1,-1,-1,0,0,1,1,1},fy[10000]={-1,0,1,-1,1,-1,0,1},ex,ey,bx,by,n,sum=0;
    int m;
    char k;
    void dfs(int x,int y){
    	for(int i=0;i<8;i++){
    		int nx=x+fx[i];
    		int ny=y+fy[i];
    		if(nx<1||ny<1||nx>n||ny>m||mp[nx][ny]){
    			continue;
    		}
    		mp[nx][ny]=1;
    		dfs(nx,ny);
    	}
    }
    int main(){
    	cin>>n>>m;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			cin>>k;
    			if(k=='.'){
    				mp[i][j]=1;
    			}
    			if(k=='w'){
    				mp[i][j]=0;
    			}
    		}
    	}
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			if(mp[i][j]==0){
    				mp[i][j]=1;
    				dfs(i,j);
    				sum++;
    			}
    		}
    	}
    	cout<<sum;
    	return 0;
    }
    
    #include<iostream>
    using namespace std;
    int h,mp[1000][1000],fx[10000]={-1,1,0,0},fy[10000]={0,0,1,-1},ex,ey,bx,by,n,sum=0;
    int m,mk[1000][1000];
    char k;
    void dfs(int x,int y){
    	if(x==ex&&y==ey){
    		sum++;
    		return ;
    	}
    	for(int i=0;i<4;i++){
    		int nx=x+fx[i];
    		int ny=y+fy[i];
    		if(nx<1||ny<1||nx>n||ny>m||mp[nx][ny]||mk[nx][ny]){
    			continue;
    		}
    		mk[nx][ny]=1;
    		dfs(nx,ny);
    		mk[nx][ny]=0;
    	}
    }
    int main(){
    	int s,s1;
    	cin>>n>>m>>h;
    	cin>>bx>>by>>ex>>ey;
    	for(int i=1;i<=h;i++){
    		cin>>s>>s1;
    		mp[s][s1]=1;
    		mk[s][s1]=1;
    	}
    	mk[bx][by]=1;
    	dfs(bx,by);
    	cout<<sum;
    	return 0;
    }
    
    #include<iostream>
    using namespace std;
    int h,mp[1000][1000],fx[10000]={0,-1,0,1},fy[10000]={-1,0,1,0},ex,ey,bx,by,n,sum=0;
    int m,mk[1000][1000];
    char k;
    int s=1;
    struct node{
    	int a,b;
    }jkl[100000];
    void dfs(int x,int y){
    	jkl[s].a=x;
    	jkl[s].b=y;
    	if(x==ex&&y==ey){
    		sum=1;
    		for(int i=1;i<s;i++){
    			cout<<"("<<jkl[i].a<<","<<jkl[i].b<<")"<<"->";
    		}
    		cout<<"("<<jkl[s].a<<","<<jkl[s].b<<")";
    		cout<<endl;
    		return ;
    	}
    	for(int i=0;i<4;i++){
    		int nx=x+fx[i];
    		int ny=y+fy[i];
    		if(nx<1||ny<1||nx>n||ny>m||mp[nx][ny]||mk[nx][ny]){
    			continue;
    		}
    		mk[nx][ny]=1;
    		s++;	
    		dfs(nx,ny);
    		jkl[s].a=0;
    		jkl[s].b=0;
    		s--;
    		mk[nx][ny]=0;
    		
    	}
    }
    int main(){
    	cin>>n>>m;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			cin>>mp[i][j];
    			if(mp[i][j]==1){
    				mp[i][j]=0;
    			}
    			else if(mp[i][j]==0){
    				mp[i][j]=1;
    			}
    		}
    	}
    	cin>>bx>>by>>ex>>ey;
    	mp[bx][by]=1;
    	dfs(bx,by);
    	if(sum==0){
    		cout<<-1;
    	}
    	return 0;
    }
    

    #include using namespace std; struct node{ int x,y; }a[10000]; int p[1000000],py=0,sum=0; int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].x; cin>>a[i].y; if(a[i].x>=90&&a[i].y<=140&&a[i].y>=60&&a[i].y<=90){ p[i]=1; } } for(int i=1;i<=n+1;i++){ if(p[i]==1){ sum++; } else{ if(sum>py){ py=sum; } sum=0;

    }
    }
    cout<<py;
    

    } #include<bits/stdc++.h> using namespace std; long long ma=-1,n,a[1000000],b[1000000]; int main(){ cin>>n; cin>>a[1]; b[1]=1; ma=1; for(int i=2;i<=n;i++){ cin>>a[i]; for(int j=i-1;j>=1;j--){ if(a[j]<a[i]){ b[i]=max(b[j]+1,b[i]); } } if(b[i]==0){ b[i]=1; } ma=max(ma,b[i]); } cout<<ma; return 0; }

  • 通过的题目

  • 最近活动

题目标签

月赛语法
7
初窥门径
5
循环结构
4
顺序结构
3
驾轻就熟
3
一本通编程启蒙
3
略有小成
2
模拟
2
GESP三级
2
月赛算法
2
while循环
1
融会贯通
1
BFS
1
二分答案
1
动态规划
1
NOIP2004提高组
1
DFS
1
计数排序
1
进制转换
1
数组
1