Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
数据比较水,把char变量定义为int型,调试了4个多小时。提交50多次,哭了。。所有数据的白色和黑色都是一样的数量(真水) 然后 根本不用管什么吃不吃,直接记录 然后排序输出。 发一下我的优先队列,代码。 #include<stdio.h> #include<algorithm> #include<string.h> #include<string> #include<map> #include<queue> #include<vector> #include<iostream> #define Max #define inf 0x3f3f3f3f using namespace std; struct Node{ char x;//列 int y;//行 char id; //id }; int table[]={999,4,999,999,999,999,999,999,999,999,1,999,999,5,999,6,2,3,999,999}; struct cmp1{ //what bool operator()(struct Node a,struct Node b) { if(a.id!=b.id) { return table[a.id-'A']>table[b.id-'A']; } else if(a.y!=b.y) //w的 1 { return a.y>b.y; } else { return a.x>b.x; } } }; struct cmp2{ //black bool operator()(struct Node a,struct Node b) { if(a.id!=b.id) { return (table[a.id-'a']>table[b.id-'a']); } else if(a.y!=b.y) //大的 { return a.y<b.y; } else { return a.x>b.x; } } }; priority_queue <struct Node,vector<struct Node>, cmp1> qw;//白色 priority_queue <struct Node,vector<struct Node>, cmp2> qb;//黑色 char laji[100]; int main() { int temp1,temp2,temp3,temp4,x,y; char value; struct Node temp; for(int i=8;i>=1;i--) { scanf("%s",laji); getchar(); for(char j='a';j<='h';j++) { scanf("%c%c%c%c",&temp1,&temp2,&value,&temp4); if(value>='A'&&value<='Z') //w { temp.id=value; temp.x=j; temp.y=i; qw.push(temp); } else if(value>='a'&&value<='z') { temp.id=value; temp.x=j; temp.y=i; qb.push(temp); } } getchar(); getchar(); } scanf("%s",laji); getchar(); cout<<"White: "; //我曾以为是不是printf的问题(遇到了,迷!),然而并不是 if(qw.size())//出队 { temp=qw.top(); qw.pop(); if(temp.id!='P') printf("%c",temp.id); printf("%c%d",temp.x,temp.y); } while(qw.size()) { temp=qw.top(); qw.pop(); printf(","); if(temp.id!='P') printf("%c",temp.id); printf("%c%d",temp.x,temp.y); } cout<<endl; cout<<"Black: "; if(qb.size()) { temp=qb.top(); qb.pop(); if(temp.id!='p') printf("%c",temp.id-32); printf("%c%d",temp.x,temp.y); } while(qb.size()) { temp=qb.top(); qb.pop(); printf(","); if(temp.id!='p') printf("%c",temp.id-32); printf("%c%d",temp.x,temp.y); } cout<<endl; return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator