zoj1411-Anniversary(wa)

来源:互联网 发布:playhome捏脸数据 编辑:程序博客网 时间:2024/06/10 00:29

这题不知道个人感觉这个方法来实现应该没有问题,但是不知道为什么就是wa,应该是什么情况没有考虑,找不到...有找到的希望看看

我是先把每个人希望分到的大小按照从大到小排列,

然后再从第一个格到最后一个搜索是否有空,

如果有就检测有四个角有没有空

如果有空就填充格

如果都找不到空就输出找到失败,

如果吧全部的输入都填充了格子,

然后计算全部填充的是否达到不浪费

总体是这样,但是就不知道为什么不行,测试例子通过,但是提交wa

#include<iostream>#include<cstring>#include<queue>using namespace std;char cake[17][17];int main(){int icase;cin>>icase;priority_queue<int> que;while(icase--){int sum=0;while(!que.empty())que.pop();memset(cake,' ',sizeof(cake));int size,peo,temp;cin>>size>>peo;while(peo--){cin>>temp;sum+=temp*temp;que.push(temp);}bool fl=true;while(!que.empty()){bool flag=false;temp=que.top();que.pop();for(int i=1;i<=size;i++){ for(int j=1;j<=size;j++)if(cake[i][j]==' '&&cake[i+temp-1][j+temp-1]==' '&&cake[i][j+temp-1]==' '&&cake[i+temp-1][j]==' '&&j+temp-1<=size&&i+temp-1<=size){for(int z=0;z<temp;z++)for(int x=0;x<temp;x++)cake[i+z][j+x]='#';           flag=true;break;}if(flag)break;}if(!flag){fl=false;cout<<"HUTUTU!"<<endl;break;}}if(fl){if(sum==size*size)cout<<"KHOOOOB!"<<endl;elsecout<<"HUTUTU!"<<endl;}}return 0;}


 

原创粉丝点击