链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
题目描述
在中国象棋中正所谓新手玩车,熟手玩炮,老手玩马,由此可见象棋中炮的地位还是比较高的。
给定一个n×m的棋盘,全部摆满炮,我们视所有炮都不属于同一阵营,他们之间可以相互攻击但不能不进行攻击直接移动。请问经历若干次攻击,直到不能攻击后,最少能剩余多少个炮。
输入描述:
第一行一个正整数T,表示数据组数
对于每组数据,输入两个正整数n和m
输出描述:
对于每组数据,输出最少能剩余多少个炮。
示例1
输入
2 1 2 2 3
输出
2 4
#include <iostream>
using namespace std;
int main(){
int n;
cin >> n;//输入n表示几组
int a,b;//先定义在外边,for循环就可以不断赋值运算
for (int i = 1;i<=n;i++){
cin >> a >> b;//将定义的a,b,输入
if (a >= 2 && b >= 2){
cout << 4;//都大于2时
}
else if(a < 2 && b >= 2){
cout << 2;//其中一个小于2
}
else if(a >= 2 && b < 2){
cout << 2;//其中一个小于2
}
else if(a < 2 && b < 2){
cout << 1;//都小于2
}
}
return 0;
}
可以怎么想:无论有多少横多少列(都大于或等于2),可以在纸上演算一遍,很简单的,结果只剩下2 横*2列的炮。而其中一个小于2,另一个大于或等于2,则结果为2。若都为1,则结果为1。