Submission

Status:

----------

Subtask/Task Score:

0/100

Score: 0

User: krittaphot

Problemset: ทางเชื่อม

Language: cpp

Time: 0.918 second

Submitted On: 2026-03-04 13:31:09

#include <bits/stdc++.h>

using namespace std;

int main()
{
	int q;
	cin >> q;
	while(q--){
		int n;
		cin >> n;
		vector<vector<int>> dp(2,vector<int> (n+1,0));
		dp[0][0] = 1;
		dp[1][0] = 1;
		vector<vector<bool>> mp(2,vector<bool> (n+1,true));
		for(int i = 0;i<2;i++){
			for(int j = 1;j<n+1;j++){
				char c;
				cin >> c;
				if(c == '#'){
					mp[i][j] = false;
				}
			}
		}
//		
//		for(int i = 0;i<2;i++){
//			for(int j = 0;j<n+1;j++){
//				cout << mp[i][j] << " ";
//			}
//			cout << "\n";
//		}
	
		for(int j = 1;j<n+1;j++){
			for(int i = 0;i<2;i++){
				if(!mp[i][j]){
					dp[i][j] = 0;
					continue;
				}
				if(i == 0){
					if(!mp[i+1][j]){
						dp[i][j] += dp[i][j-1];
					}
					else{
						dp[i][j] += dp[i][j-1] ;
						dp[i][j] += dp[i+1][j-1] ;
					}
				}
				else{
					if(!mp[i-1][j]){
						dp[i][j] += dp[i][j-1] ;
					}
					else{
						dp[i][j] += dp[i][j-1] ;
						dp[i][j] += dp[i-1][j-1] ;
					}
				}
			}
		}
		
//		cout << dp[0][n] << " " << dp[1][n] << "\n";
		cout << (dp[0][n]+dp[1][n]) << "\n";
	}
}