1 条题解

  • 1
    @ 2025-2-9 16:53:43
    #include <bits/stdc++.h>
    using namespace std;
    char mp[1005][1005];
    int n,m,sx,sy,fx,fy;
    int dx[4]={0,0,1,-1};
    int dy[4]={1,-1,0,0};
    int vis[1005][1005];
    long long int s[1005];
    long long int maxx=-1;
    long long int ans;
    void dfs(int x,int y){
    	if(x==fx&&y==fy){
    		ans++;
    		return;
    	}
    	for(int i=0;i<=3;i++){//四方向 
    		int tx=dx[i]+x;
    		int ty=dy[i]+y;
    		if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&mp[tx][ty]!='#'&&vis[tx][ty]==0){
    			vis[tx][ty]=1;
    			dfs(tx,ty);
    			vis[tx][ty]=0;
    		}
    	}	
    }
    
    int main(){
    	int k;
    	cin>>n>>m>>k;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			cin>>mp[i][j];
    			if(mp[i][j]=='#'){
    				vis[i][j]=1;
    			}
    			if(mp[i][j]=='1'){
    				sx=i;
    				sy=j;
    			}
    		}
    	}
    	int v;
    	for(int i=1;i<=k;i++){
    		long long int aa,bb;
    		cin>>aa>>bb;
    		if(aa>9999){
    			bb*=aa/10000;
    		}
    		s[i]=bb;
    		if(max(maxx,s[i])==s[i]){
    			v=i;	
    		}
    		maxx=max(maxx,s[i]);
    	}
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			if(mp[i][j]==v+'0'){
    				fx=i;
    				fy=j;
    				break;
    			}
    		}
    	}
    	cout<<v<<endl;
    	vis[sx][sy]=1;
    	dfs(sx,sy);
    	cout<<ans;
    	return 0; 
    }
    
    • 1

    信息

    ID
    94
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    3
    已通过
    1
    上传者