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 |
为啥会Memory Limit Exceeded啊看讨论大家都在讨论取模,有不少人都认为取模有问题,我是使用一般的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