看了一些大佬的代码思路,自己敲了一遍,测试的时候结果貌似都对了(???)可是一提交到系统就报错。本人愚笨,请各位帮忙看看。
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
String[] input = scanner.nextLine().split(" ");
int m = Integer.parseInt(input[0]);
int n = Integer.parseInt(input[1]);
String[] data = scanner.nextLine().split(" ");
int p = Integer.parseInt(data[0]);
int q = Integer.parseInt(data[1]);
int s = p*q;
int[][][] color = new int[n][m][3];
for(int i=0 ; i<n ; i++) {
for(int j=0 ; j<m ; j++) {
String line = scanner.nextLine();
int t = 0;
if(line.length()==2) {
for(int k=0 ; k<3 ; k++)
color[i][j][k]=Integer.parseInt(line.substring(1,1)+line.charAt(1),16);
}else if(line.length()==4) {
for(int k=0 ; k<3 ; k++)
color[i][j][k]=Integer.parseInt(line.substring(k+1,k+2)+line.charAt(k+1),16);
}
else {
for(int k=0 ; k<3 ; k++) {
color[i][j][k]=Integer.parseInt(line.substring(t+1,t+3), 16);
t=t+2;
}
}
}
}
scanner.close();
int R=0,G=0,B=0,r=0,g=0,b=0;
for(int i=0 ; i<n/q ; i++) {
for(int j=0 ; j<m/p ; j++) {
R=0;G=0;B=0;
for(int k=i ; k<q*(i+1) ; k++) {
for(int l=j ; l<p*(j+1) ; l++) {
R+=color[k][l][0];
G+=color[k][l][1];
B+=color[k][l][2];
}
}
R/=s;G/=s;B/=s;
if(!(R==r&&G==g&&B==b)) {
if(R==0&&G==0&B==0)
System.out.print(toHex("[0m"));
else {
String temp = (char)27+"[48;2"+";"+String.valueOf(R)+";"+String.valueOf(G)+";"+String.valueOf(B)+"m";
System.out.print(toHex(temp));
}
r=R;g=G;b=B;
}
System.out.print(toHex(" "));
}
if(R!=0||G!=0||B!=0)System.out.print(toHex((char)27+"[0m"));
System.out.print(charToHex('\n'));
r=g=b=0;
}
}
public static String toHex(String str){
String s = "";
for(int i=0 ; i<str.length() ; i++) {
int ch = (int)str.charAt(i);
s = s+"\\x"+Integer.toHexString(ch).toUpperCase();
}
return s;
}
public static String charToHex(char ch){
String s = "";
s = s+"\\x0"+Integer.toHexString(ch).toUpperCase();
return s;
}
}