ZOJ Monthly, July 2010 on July 24.

本文分享了作者参加编程比赛的心得体会,并提供了一个关于足球比赛中得分判定的Java代码示例,展示了如何根据比赛规则来判断胜负。

a2 rank213

感冒睡了一觉,结果回来脑袋比较清楚,出了两个

4

简单推了一下,最水的一个

8

按照我理解的点球规则,写了一个1y

然后在5和10之间我选择了10,因为10还是涉及足球规则(刚刚结束的世界杯的红黄牌新制),但最终感觉这个题目超烦,没出;

这次比赛,我再次感觉到以我现在的实力,比赛时只要把那些水题,胡搞题做出来了,就可以了!

保存第二个代码

import java.io.*; import java.util.Arrays; public class Main { public static int check(int homeCnt, int homeScore, int awayCnt, int awayScore) { if (homeCnt <= 5 && awayCnt <= 5) { if (homeScore - awayScore > 5 - awayCnt) return -1; else if (awayScore - homeScore > 5 - homeCnt) return 1; else return 0; } else { if (homeCnt == awayCnt) { if (homeScore > awayScore) return -1; else if (homeScore < awayScore) return 1; else return 0; } else return 0; } } public static void main(String[] args) throws IOException { StreamTokenizer in = new StreamTokenizer(new BufferedReader( new InputStreamReader(System.in))); in.nextToken(); int t = (int) in.nval; int cnt = 1; boolean[][] mat1 = new boolean[11][3]; boolean[][] mat2 = new boolean[11][3]; while (t-- != 0) { int ans = 0; for (int i = 0; i < 11; ++i) { for (int j = 0; j < 3; ++j) { in.nextToken(); mat1[i][j] = in.sval.equals("yes") ? true : false; } } for (int i = 0; i < 11; ++i) { for (int j = 0; j < 3; ++j) { in.nextToken(); mat2[i][j] = in.sval.equals("yes") ? true : false; } } // System.out.println("home"); // for (int i = 0; i < 11; ++i) { // System.out.println(Arrays.toString(mat1[i])); // } // System.out.println("away:"); // for (int i = 0; i < 11; ++i) { // System.out.println(Arrays.toString(mat2[i])); // } int homeCnt = 0, awayCnt = 0, homeScore = 0, awayScore = 0; boolean flag = false; while (true) { outer: for (int j = 0; j < 3; ++j) { inner: for (int i = 0; i < 11; ++i) { if (mat1[i][j]) { homeScore++; homeCnt++; ans = check(homeCnt, homeScore, awayCnt, awayScore); if (ans != 0) { flag = true; break outer; } } else { // homeScore++; homeCnt++; ans = check(homeCnt, homeScore, awayCnt, awayScore); if (ans != 0) { flag = true; break outer; } } if (mat2[i][j]) { awayScore++; awayCnt++; ans = check(homeCnt, homeScore, awayCnt, awayScore); if (ans != 0) { flag = true; break outer; } } else { // awayScore++; awayCnt++; ans = check(homeCnt, homeScore, awayCnt, awayScore); if (ans != 0) { flag = true; break outer; } } } } if (flag) break; } if (ans == -1) { System.out.println("Match " + cnt++ + ":"); System.out.println("Winner: home"); System.out.println("Score: " + homeScore + ":" + awayScore); } else { System.out.println("Match " + cnt++ + ":"); System.out.println("Winner: away"); System.out.println("Score: " + homeScore + ":" + awayScore); } } } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值