我正在努力解决"A和B及国际象棋“问题,其内容如下:
A、B和国际象棋每次测试的时间限制1秒内存限制每测试256 A.输入标准输入输出标准输出 A和B正在为节目比赛做准备。 为了训练他们的逻辑思维,更好地解决问题,A和B决定下棋。在比赛中,A想知道谁的位置现在更强了。 我们知道每一个棋子的重量: 女王的体重是9,鲁克的重量是5,主教的重量是3,骑士的重量是3,典当的重量是1,在评估位置时不考虑国王的重量。 运动员的体重等于棋盘上所有棋子的重量之和。 由于A不喜欢计数,他要求你帮助他确定哪个球员的位置权重更大。输入 输入包含8行,每一行8个字符--董事会的描述。 黑板上的白片用大写字母标记,黑色部分用小写字母标记。 白字的意思如下:女王的代表是'Q',鲁克是'R',主教是‘B’,骑士是'N',当铺是'P',国王是'K‘。 黑点分别表示为'q','r','b','n','p','k‘。 板上的一个空方格标记为“”。(一个点)。 这并不能保证给定的棋子位置可以在一场真正的比赛中实现。具体来说,每种类型都有任意数量(可能为零)的碎片,国王可能受到攻击等等。输出 打印“白色”(无引号),如果白件的位置重量大于黑件的重量,则打印“黑色”,如果黑片的重量大于白件的重量,则打印“绘制”,如果白色和黑色的重量相等。样本测试 例1输入...QK.........rk...输出白色案例2输入rnbqkbnr pppppppp ....PPPPPPPP输出绘制案例3:输入rppppppr ...k.....K.Q.输出黑 备注 在第一个测试样本中,白件位置的重量等于9,黑件位置的重量等于5。 在第二次测试样本中,黑片和白片位置的权重为39。 在第三个测试样本中,白件位置的重量等于9,黑件位置的重量等于16。
我的代码是:
import java.util.Scanner;
public class chess {
private final static int QUEEN = 9;
private final static int ROOK = 5;
private final static int BISHOP = 3;
private final static int KNIGHT = 3;
private final static int PAWN = 1;
private final static int KING = 0;
public static void main(String[] args) {
int blackScore = 0;
int whiteScore = 0;
Scanner scan = new Scanner(System.in);
String[] input = new String[8];
input[0] = scan.nextLine();
input[1] = scan.nextLine();
input[2] = scan.nextLine();
input[3] = scan.nextLine();
input[4] = scan.nextLine();
input[5] = scan.nextLine();
input[6] = scan.nextLine();
input[7] = scan.nextLine();
for(int i = 0; i < input.length; i++) {
if(input[i].contains("Q")) {
whiteScore += QUEEN;
}
if(input[i].contains("R")) {
whiteScore += ROOK;
}
if(input[i].contains("N")) {
whiteScore += KNIGHT;
}
if(input[i].contains("B")) {
whiteScore += BISHOP;
}
if(input[i].contains("P")) {
whiteScore += PAWN;
}
if(input[i].contains("K")) {
whiteScore += KING;
}
if(input[i].contains("q")) {
blackScore += QUEEN;
}
if(input[i].contains("n")) {
blackScore += KNIGHT;
}
if(input[i].contains("b")) {
blackScore += BISHOP;
}
if(input[i].contains("p")) {
blackScore += PAWN;
}
if(input[i].contains("k")) {
blackScore += KING;
}
if(input[i].contains("r")) {
blackScore += ROOK;
}
}
if(whiteScore != blackScore) {
if(blackScore > whiteScore) {
System.out.println("Black");
}
if (whiteScore > blackScore) {
System.out.println("White");
}
}else {
System.out.println("Draw");
}
System.out.println(whiteScore);
System.out.println(blackScore);
}
}有人能解释我做错了什么吗?谢谢!!
发布于 2015-03-13 20:04:03
我认为你必须使用“否则如果”语句,而不是“如果”,尝试这个,我希望这有帮助。
import java.util.Scanner;
public class chess {
private final static int QUEEN = 9;
private final static int ROOK = 5;
private final static int BISHOP = 3;
private final static int KNIGHT = 3;
private final static int PAWN = 1;
private final static int KING = 0;
public static void main(String[] args) {
int blackScore = 0;
int whiteScore = 0;
Scanner scan = new Scanner(System.in);
String[] input = new String[8];
input[0] = scan.nextLine();
input[1] = scan.nextLine();
input[2] = scan.nextLine();
input[3] = scan.nextLine();
input[4] = scan.nextLine();
input[5] = scan.nextLine();
input[6] = scan.nextLine();
input[7] = scan.nextLine();
for(int i = 0; i < input.length; i++) {
if(input[i].contains("Q")) {
whiteScore += QUEEN;
}
else if(input[i].contains("R")) {
whiteScore += ROOK;
}
else if(input[i].contains("N")) {
whiteScore += KNIGHT;
}
else if(input[i].contains("B")) {
whiteScore += BISHOP;
}
else if(input[i].contains("P")) {
whiteScore += PAWN;
}
else if(input[i].contains("K")) {
whiteScore += KING;
}
else if(input[i].contains("q")) {
blackScore += QUEEN;
}
else if(input[i].contains("n")) {
blackScore += KNIGHT;
}
else if(input[i].contains("b")) {
blackScore += BISHOP;
}
else if(input[i].contains("p")) {
blackScore += PAWN;
}
else if(input[i].contains("k")) {
blackScore += KING;
}
else if(input[i].contains("r")) {
blackScore += ROOK;
}
}
if(whiteScore != blackScore) {
if(blackScore > whiteScore) {
System.out.println("Black");
}
if (whiteScore > blackScore) {
System.out.println("White");
}
}else {
System.out.println("Draw");
}
System.out.println(whiteScore);
System.out.println(blackScore);
}
}发布于 2015-03-13 20:25:49
问题是,只要在一条线上发现棋子上出现的任何数量的棋子,你就只包括棋子中某一个的点数。看看你离解决方案有多近,我认为光是暗示就足够了!
https://stackoverflow.com/questions/29040865
复制相似问题