全部评论 22

  • 2024-10-04 来自 广东

    3
  • 2024-10-04 来自 广东

    3
  • T1:
    input:
    4 8
    1 2
    3 1
    5 10
    8 100
    output:
    7

    2024-10-04 来自 广东

    3
  • T3:
    input:
    5
    3 1
    ...
    ...
    ...
    3 1
    ...
    .H.
    ...
    3 1
    .HH
    HHH
    HH.
    3 1
    .H.
    H..
    ...
    4 1
    ...H
    .H..
    ....
    H...
    output:
    2
    2
    0
    0
    0

    2024-10-04 来自 广东

    3
  • T2:
    input:
    40
    35 8 36 39 14 5 8 4 31 28 17 15 27 0 23 33 37 10 4 31 3 9 36 23 2 40 20 47 44 9 2 28 43 38 17 6 17 50 10 22
    27 27 38 3 2 35 10 39 19 14 45 48 48 30 20 0 44 14 21 38 49 48 15 41 35 6 21 2 5 31 24 33 32 36 10 34 46 21 48 14
    output:
    550

    2024-10-04 来自 广东

    3
  • T4:
    input:
    8 2
    ABBAABCB
    3 6
    1 4
    output:
    4
    3
    

    2024-10-04 来自 广东

    3
  • 2024-10-03 来自 广东

    3
  • 2024-10-03 来自 广东

    3
  • 2024-10-03 来自 广东

    3
  • 2024-10-03 来自 广东

    3
  • 点赞

    2024-10-03 来自 广东

    3
  • T5D3
    input:
    20
    1 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 1 0 1
    output:
    0 0 1 1 1 0 0 1 1 1 1 0 0 1 0 1 0 0 1 0 

    1周前 来自 广东

    0
  • 1周前 来自 广东

    0
  • 1周前 来自 广东

    0
  • 1周前 来自 广东

    0
  • D5_T2:
    input:
    10 630978896
    5897656637044 5898287615941 21708673304557 21709304283455 27970672544691 27971303523587 27971934502484 27972565481380 27973196460277 27973827439173
    output:
    6309788967
    
    

    1周前 来自 广东

    0
  • #include<bits/stdc++.h>
    using namespace std;
    
    int n,ans[55][55][10][3];
    int k;
    char g[55][55];
    
    int dfs(int x,int y,int cnt,int dir)
    {
        if(ans[x][y][cnt][dir]>0)
        {
            return ans[x][y][cnt][dir];
        }
        
        if(cnt>k) return 0;
        
        if(cnt==k && x!=n && y!=n) return 0;
        
        if(x==n && y==n)
        {
        	ans[x][y][cnt][dir]++;
        	return ans[x][y][cnt][dir];
    	}
    	
    	int tx=x,ty=y+1;
    	
    	int sum=0;
    	
    	if(g[tx][ty]!='H' && ty<=n)
    	{
    		if(dir==0)sum+=dfs(tx,ty,cnt,0);
    		else sum+=dfs(tx,ty,cnt+1,0);
    	}
    	
    	if(g[tx][ty]!='H' && tx<=n)
    	{
    		if(dir==0)sum+=dfs(tx,ty,cnt+1,1);
    		else sum+=dfs(tx,ty,cnt,1);
    	}
    	
    	ans[x][y][cnt][dir]=sum;
    	
    	return sum;
    }
    
    void slove()
    {
        int ans;
    	cin>>n>>k;
    	for(int i=1;i<=n;i++)
    	{
    		for(int j=1;j<=n;j++)
    		{
    			cin>>g[i][j];
    		}
    	}
    	if(g[1][2]!='H') ans=dfs(1,2,0,0);
    	if(g[2][1]!='H') ans=dfs(2,1,0,1);
        
        cout<<ans<<endl;
        ans=0;
    }
    
    int main()
    {
    	freopen("drift.in","r",stdin);
    	freopen("drift.out","w",stdout);
    	int t;
        cin>>t;
        while(t--)
        {
            slove();
        }
    	fclose(stdin);
    	fclose(stdout);
        return 0;
    }
    

    2024-10-04 来自 广东

    0
  • 2024-10-04 来自 广东

    0
  • 2024-10-04 来自 广东

    0
  • 2024-10-04 来自 广东

    0

热门讨论