原题:http://acm.pku.edu.cn/JudgeOnline/problem?id=1020
题目要求我们检测是否能将给定的多个小正方形拼成一个完整的大的正方形。
采用搜索遍历的方法:
拼凑的方法类似于俄罗斯方块游戏,不同的是每次拼凑的时候必须先找到高度最低的那一列拼凑,如果某一个小正方形不成功的话,则回溯。
#include<iostream> using namespace std; const int maxSize = 40; const int maxOfCakes = 10; int cakeSize,npieces; int cakes[maxOfCakes+1],len[maxSize+1]; bool Check(int usedNum) { if(usedNum==npieces) return true; int min = maxSize,ind = 0; for(int col=1;col<=cakeSize;col++) //找到高度最低的那一列 { if(min>len[col]) { min = len[col]; ind = col; } } for(int cs=1;cs<=maxOfCakes;cs++) { if(cakes[cs] && len[ind]+cs<=cakeSize) { int width = 0; for(int i=ind;i<=cakeSize;i++) { if(len[i]==len[ind]) width++; else break; } if(width>=cs) { cakes[cs]--; for(int i=ind;i<ind+cs;i++) len[i] += cs; if(Check(usedNum+1)) return true; for(int i=ind;i<ind+cs;i++) len[i] -= cs; cakes[cs]++; } } } return false; } int main() { int testNum; cin>>testNum; int side,sum; for(int i=0;i<testNum;i++) { for(int j=0;j<=maxSize;j++) len[j] = 0; for(int j=0;j<=maxOfCakes;j++) cakes[j] = 0; cin>>cakeSize>>npieces; sum = 0; for(int j=0;j<npieces;j++) { cin>>side; sum += side*side; cakes[side]++; } if(cakeSize*cakeSize==sum && Check(0)) { cout<<"KHOOOOB!"<<endl; } else { cout<<"HUTUTU!"<<endl; } } return 0; }
您还没有登录,请您登录后再发表评论
北大POJ1020-Anniversary Cake 解题报告+AC代码
北大POJ2002-Squares 解题报告+AC代码
北大POJ3253-POJ3253-Fence Repair【STL优先队列】 解题报告+AC代码
poj 1000 - 2000 部分题目 官方分类 poj 1000 - 2000 部分题目 官方分类
北大POJ1426-Find The Multiple【BFS+同余模】 解题报告+AC代码
北大POJ3020-Antenna Placement 解题报告+AC代码
这是魔兽世界终极版POJ的-测试数据,找了好久才找到的。 本来想设置为0积分,但是它居然自动收费(o_ _)ノ。 看传送门:https://pan.baidu.com/s/1cCIwW8psGDASu2JdZawG3Q
北大POJ3414-Pots 解题报告+AC代码
POJ3211--Washing Clothes
北大POJ2305-Basic remains POJ2305-Basic remains
北大POJ1321-Chess Problem POJ1321-Chess Problem
poj-1002源码,没有题解,题解看博客poj-1002源码,没有题解,题解看博客poj-1002源码,没有题解,题解看博客poj-1002源码,没有题解,题解看博客
北大POJ1080-Human Gene Functions POJ1080-Human Gene Functions
北大POJ1696-Space Ant 解题报告+AC代码
POJ---1456.Supermarket测试数据及答案,题目描述:A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold by a deadline dx that is measured as an integral ...
POJ 1038--Bugs Integrated
POJ3036--Honeycomb Walk
poj 1000-3000部分代码 网上收集
北大POJ3273-Monthly Expense POJ3273-Monthly Expense
北大POJ1159-Palindrome 解题报告+AC代码
相关推荐
北大POJ1020-Anniversary Cake 解题报告+AC代码
北大POJ2002-Squares 解题报告+AC代码
北大POJ3253-POJ3253-Fence Repair【STL优先队列】 解题报告+AC代码
poj 1000 - 2000 部分题目 官方分类 poj 1000 - 2000 部分题目 官方分类
北大POJ1426-Find The Multiple【BFS+同余模】 解题报告+AC代码
北大POJ3020-Antenna Placement 解题报告+AC代码
这是魔兽世界终极版POJ的-测试数据,找了好久才找到的。 本来想设置为0积分,但是它居然自动收费(o_ _)ノ。 看传送门:https://pan.baidu.com/s/1cCIwW8psGDASu2JdZawG3Q
北大POJ3414-Pots 解题报告+AC代码
POJ3211--Washing Clothes
北大POJ2305-Basic remains POJ2305-Basic remains
北大POJ1321-Chess Problem POJ1321-Chess Problem
poj-1002源码,没有题解,题解看博客poj-1002源码,没有题解,题解看博客poj-1002源码,没有题解,题解看博客poj-1002源码,没有题解,题解看博客
北大POJ1080-Human Gene Functions POJ1080-Human Gene Functions
北大POJ1696-Space Ant 解题报告+AC代码
POJ---1456.Supermarket测试数据及答案,题目描述:A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold by a deadline dx that is measured as an integral ...
POJ 1038--Bugs Integrated
POJ3036--Honeycomb Walk
poj 1000-3000部分代码 网上收集
北大POJ3273-Monthly Expense POJ3273-Monthly Expense
北大POJ1159-Palindrome 解题报告+AC代码