1 /*排序函数要写对,优先级:K,Q,R,B,N,P 2 白色的:如果优先级一样,那么按照行数大的优先,如果行数一样,那么列数小的优先 3 黑色的:如果优先级一样,那么按照行数小的优先,如果行数一样,那么列数小的优先 4 第一个在左下脚,向上数*/ 5 #include<stdio.h> 6 #include<string.h> 7 #include<algoritm> 8 using namespace std; 9 struct point 10 { 11 int i,j; 12 char c; 13 int num; 14 }p[1000]; 15 int cmp(const point a,const point b) 16 { 17 if(a.num==b.num) 18 { 19 if(a.i==b.i) return a.j<b.j; 20 return a.i>b.i; 21 } 22 return a.num>b.num; 23 } 24 int cmp1(const point a,const point b) 25 { 26 if(a.num==b.num) 27 { 28 if(a.i==b.i) return a.j<b.j; 29 return a.i<b.i; 30 } 31 return a.num>b.num; 32 } 33 int chack(char c) 34 { 35 if(c=='K' || c=='k') return 5; 36 if(c=='Q' || c=='q') return 4; 37 if(c=='R' || c=='r') return 3; 38 if(c=='B' || c=='b') return 2; 39 if(c=='N' || c=='n') return 1; 40 if(c=='P' || c=='p') return 0; 41 } 42 int find(int n) 43 { 44 if(n==2) return 'a'; 45 if(n==6) return 'b'; 46 if(n==10) return 'c'; 47 if(n==14) return 'd'; 48 if(n==18) return 'e'; 49 if(n==22) return 'f'; 50 if(n==26) return 'g'; 51 if(n==30) return 'h'; 52 } 53 int ok(int n) 54 { 55 if(n==16) return 1; 56 if(n==14) return 2; 57 if(n==12) return 3; 58 if(n==10) return 4; 59 if(n==8) return 5; 60 if(n==6) return 6; 61 if(n==4) return 7; 62 if(n==2) return 8; 63 } 64 int main() 65 { 66 int i,j,k,n,m; 67 char s[20][100]; 68 memset(p,0,sizeof(p)); 69 for(i=1;i<=17;i++) 70 { 71 gets(s[i]); 72 } 73 k=0; 74 for(i=17;i>=1;i--) 75 { 76 m=strlen(s[i]); 77 for(j=0;j<m;j++) 78 { 79 if(s[i][j]=='K' || s[i][j]=='Q' || s[i][j]=='R' || s[i][j]=='B' 80 || s[i][j]=='N' || s[i][j]=='P') 81 { 82 83 p[k].i=i; 84 p[k].j=j; 85 p[k].c=s[i][j]; 86 p[k++].num=chack(s[i][j]); 87 } 88 } 89 } 90 91 sort(p,p+k,cmp); 92 printf("White: "); 93 for(j=0;j<k;j++) 94 { 95 if(j==0 && p[j].c=='P' ) 96 { 97 printf("%c%d",find(p[j].j),ok(p[j].i)); 98 } 99 else if(j==0) printf("%c%c%d",p[j].c,find(p[j].j),ok(p[j].i)); 100 else 101 { 102 if(p[j].c=='P') printf(",%c%d",find(p[j].j),ok(p[j].i)); 103 else printf(",%c%c%d",p[j].c,find(p[j].j),ok(p[j].i)); 104 } 105 } 106 printf(" "); 107 for(i=0;i<k;i++) 108 { 109 p[i].i=0; 110 p[i].j=0; 111 p[i].num=0; 112 p[i].c='