5 条题解
-
14
题目要求判断在一个2×n的网格中,是否存在一条路径可以从左上角(1, 1)走到右下角(2, n),并且路径上的每个格子都是0。
解题思路:
- 首先我们需要遍历每一列,检查是否存在某一列上下都为1的情况,如果存在,则无法从左上角到达右下角。
- 如果不存在上下都为1的列,说明对于每一列,至少有一个格子是0,那么我们可以通过选择某一列的0格子来构成路径。
- 因此,只要能够保证每一列至少有一个0格子,就可以从左上角出发,沿着0格子构成路径到达右下角。
- 最后,根据是否存在上下都为1的列来输出结果。
代码实现如下: PY:
t = int(input()) # 读取测试数据组数 for _ in range(t): n = int(input()) # 读取网格的列数 # 读取网格的内容 s1 = input() s2 = input() canReach = True for i in range(n): if s1[i] == '1' and s2[i] == '1': canReach = False break if canReach: print("YES") else: print("NO")
C++:
#include <iostream> #include <string> using namespace std; int main() { int t; cin >> t; while (t--) { int n; cin >> n; string s1, s2; cin >> s1 >> s2; bool canReach = true; for (int i = 0; i < n; i++) { if (s1[i] == '1' && s2[i] == '1') { canReach = false; break; } } if (canReach) { cout << "YES" << endl; } else { cout << "NO" << endl; } } return 0; }
-
2
- 题目要求判断在一个2×n的网格中,是否存在一条路径可以从左上角(1, 1)走到右下角(2, n),并且路径上的每个格子都是0。
- 意思:只要有一列全是1,那就无法通过
- 首先接收数据,可直接存为
string
- 遍历2个
string
找出两列都是1的 - 按要求输出
函数:
string tongguo(int n,string x,string y){ for(int i=0;i<n;i++){ if(x[i]=='1' && y[i]=='1')return "NO"; }return "YES"; }
main
函数:cin>>t; for(int i=1;i<=t;i++){ cin>>n; cin>>s1>>s2; cout<<tongguo(n,s1,s2)<<endl; }return 0;
-
0
只要有一列全是1,那就无法通过。 代码:
#include <iostream> using namespace std; int t,n; string s1,s2; int main(void){ cin>>t; for(int i=1;i<=t;i++){ cin>>n; cin>>s1>>s2; for(int j=0;j<n;j++) if(s1[j]=='1'&&s2[j]=='1'){ cout<<"NO"<<endl; goto ok; //跳转 } cout<<"YES"<<endl; ok: __asm("nop"); //nop指令没有用,凑数 } return 0; }
- 1
信息
- ID
- 333
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- (无)
- 递交数
- 450
- 已通过
- 300
- 上传者