划拳:PTA乙级 T1046
题目要求:
PTA乙级 T1046 题目要求
1⃣️ 傻瓜算法:做两重判断
import java.util.*;
public class T1046 {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
int jia_han, jia_hua;
int yi_han, yi_hua;
int jia_count = 0, yi_count = 0;
int line;
line = reader.nextInt();
for( int i = 1; i <= line; i++ )
{
jia_han = reader.nextInt();
jia_hua = reader.nextInt();
yi_han = reader.nextInt();
yi_hua = reader.nextInt();
if( jia_han + yi_han == jia_hua )
{
if( jia_han + yi_han == yi_hua )
{
continue;
}
yi_count += 1;
}
if( jia_han + yi_han == yi_hua )
{
if( jia_han + yi_han == jia_hua )
{
continue;
}
jia_count += 1;
}
}
System.out.print(jia_count+" "+yi_count);
}
}
- 在输入一行后立刻完成计算,减少变量。
- 该方法使用了两重判断,其实对甲、乙同时猜对情况的判断重复了。
- 另外,题目要求的是甲和乙喝酒的次数,即输掉比赛的次数每次猜对,就应当使得对方的变量自增1。这里特别容易使用错误变量。
2⃣️ 升级版算法:减少重复判断
如何减少重复判断呢?我们观察数据可以发现,当甲、乙同时猜中对情况出现时,他们划出的数字一定是相等的。只要判断是否相等即可避免重复判断。
我们对判断模块的代码段进行修改:
if(jia_hua == yi_hua) continue;
else {
if(jia_han + yi_han == jia_hua) {
yi_count++;
}
else if(jia_han + yi_han == yi_han) {
jia_count++;
}
}
这样我们就可以减少运算量了。