zoukankan      html  css  js  c++  java
  • poj2996

      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='';
    113          }
    114          k=0;
    115     for(i=1;i<=17;i++)
    116     {
    117          m=strlen(s[i]);
    118         for(j=0;j<m;j++)
    119         {
    120             if(s[i][j]=='k' || s[i][j]=='q' || s[i][j]=='r' || s[i][j]=='b'
    121                 || s[i][j]=='n' || s[i][j]=='p')
    122             {
    123 
    124                  p[k].i=i;
    125                  p[k].j=j;
    126                  p[k].c=s[i][j];
    127                  p[k++].num=chack(s[i][j]);
    128             }
    129         }
    130     }
    131     sort(p,p+k,cmp1);
    132         printf("Black: ");
    133         for(j=0;j<k;j++)
    134         {
    135             if(j==0 && p[j].c=='p' )
    136             {
    137                 printf("%c%d",find(p[j].j),ok(p[j].i));
    138             }
    139             else if(j==0) printf("%c%c%d",p[j].c-32,find(p[j].j),ok(p[j].i));
    140             else
    141             {
    142                  if(p[j].c=='p') printf(",%c%d",find(p[j].j),ok(p[j].i));
    143                  else printf(",%c%c%d",p[j].c-32,find(p[j].j),ok(p[j].i));
    144             }
    145         }
    146         printf("
    ");
    147     return 0;
    148 }
  • 相关阅读:
    webpack--前端自动化工具
    Vue--入门篇
    集千篇理论,终得深拷贝与浅拷贝的初解
    事件循环--eventloop
    对象的属性(变量+对象)
    集千篇理论精华,感悟对同步和异步的理解
    vue--先决篇
    js的基本语法规范
    python 模块加载错误总结
    Python logging模块无法正常输出日志
  • 原文地址:https://www.cnblogs.com/okboy/p/3223429.html
Copyright © 2011-2022 走看看