| ||||||||||
| 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 | |||||||||
Re:为啥会Memory Limit Exceeded啊In Reply To:为啥会Memory Limit Exceeded啊 Posted by:acidsweet at 2012-12-19 16:57:12 > 看讨论大家都在讨论取模,有不少人都认为取模有问题,我是使用一般的BFS的,原本想最多也就TLE,没想到竟然MLE了,敢问我的代码的内存处理有问题吗?
> #include <iostream>
> #include <vector>
> #include <queue>
> using namespace std;
> class Node
> {
> public:
> int *array;
> int rest;
> Node(int *a,int b)
> {
> array=a;
> rest=b;
> }
> Node()
> {}
> };
> bool Judge(int array[],int sum)//BFS
> {
> queue<Node> mq;
> Node tmp;
> Node root=Node(array,sum);
> mq.push(root);//root
> int i;
> while(!mq.empty())
> {
> tmp=mq.front();
> if(tmp.rest==0) return true;
> if(tmp.rest<0)
> {
> mq.pop();continue;
> }
> for(i=5;i>=0;--i)
> {
> if(tmp.array[i]>0)
> {
> (tmp.array[i])--;
> tmp.rest-=(i+1);
> root=Node(tmp);
> mq.push(root);
> ++(tmp.array[i]);
> tmp.rest+=(i+1);
> }
> }
> mq.pop();
> }
> return false;
> }
> int main()
> {
> int array[6];
> vector<bool> results;
> int sum,i;
> while(true)
> {
> sum=0;
> for(i=0;i<6;i++)
> {
> cin>>array[i];
> sum+=array[i];
> }
> if(sum==0)break;
> if((sum%2)!=0)
> {
> results.push_back(false);//impossible to divide
> continue;
> }
> results.push_back(Judge(array,sum/2));//拼出一半
> }
> for(unsigned int i=0;i<results.size();i++)
> {
> cout<<"Collection #"<<(i+1)<<":"<<endl;
> if(results[i])
> cout<<"Can be divided."<<endl;
> else
> cout<<"Can't be divided."<<endl;
> }
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator