本文最后更新于 1163 天前,其中的信息可能已经有所发展或是发生改变。
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int money;
int array[17];
int array1[300];
int answer=0;
class cla{
public:
void search(int step,int temp){
if(this->sum(array1)==money){
//this->print(array1);
answer++;
}
else if(this->sum(array1)<money){
for(int i=temp;i<17;i++){
array1[step]=array[i];
this->search(step+1,i);
array1[step]=0;
}
}
}
int sum(int array1[300]){
int i=0,temp=0;
while(array1[i]!=0){
temp+=array1[i];
i++;
}
return temp;
}
void print(int array1[300]){
int i=0;
while(array1[i]!=0){
cout<<array1[i]<<" ";
i++;
}
cout<<endl;
}
};
void initialization(int array[17]){
for(int i=0;i<17;i++){
array[i]=pow(i+1,2);
}
}
int main(){
initialization(array);
cin>>money;
while(money!=0){
answer=0;
memset(array1,0,sizeof(array1));
cla c;
c.search(0,0);
cout<<answer<<endl;
cin>>money;
}
return 0;
}
Post Views: 196