Re: 574 - too slow
Posted: Mon Aug 08, 2011 11:08 am
Why wa? Can any one help me??
It will be very helpful for me.
how can I check 3+3+3 again and again ?
It will be very helpful for me.
how can I check 3+3+3 again and again ?

Code: Select all
#include <iostream>
#include <vector>
#include <cstdio>
using namespace std;
int target = 0, sum = 0;
vector<bool> used(1005, false);
vector<int> v;
void recurse(int index){
if(index == v.size()) return;
if(sum + v[index] == target) {
used[index] = true;
bool flag = false;
for(int i = 0; i<=index; ++i){
if(!flag){
if(used[i]) {
printf("%d", v[i]);
flag = true;
}
}
else {
if(used[i]) printf("+%d", v[i]);
}
}
printf("\n");
flag = false;
sum = 0;
used[index] = false;
return;
}
if(sum + v[index] < target){
used[index] = true;
sum += v[index];
recurse(index + 1);
used[index] = false;
}
else{
recurse(index + 1);
}
}
int main(){
int count, temp;
while(cin>>target>> count){
if(!target && !count) return 0;
for(int i = 0; i<count; ++i){
cin>>temp;
v.push_back(temp);
}
printf("Sums of %d:\n",target);
for(int i = 0; i<v.size(); ++i){
sum += v[i];
}
if(sum < target) {
printf("NONE\n");
sum = 0;
}
for(int i = 0; i<v.size(); ++i){
sum = 0;
//used[i] = true;
recurse(i);
//used[i] = false;
}
v.clear();
sum = 0;
}
return 0;
}