纯纯大冤种,用递归的屑 没有发现可以用幂来做,于是写了一个递归
#include <stdio.h>
#include <stdlib.h>
float sum=0;
float add(int Set[31],int n)
{
float a=0;
for(int i=0;i<n;i++)
a+=Set[i];
return a;
}
void AllSubSet(int Set[31],int a,int n)
{
if(a==n)
{
sum+=add(Set,n);
}
int temp=Set[a];
if(a<n)
{
AllSubSet(Set,a+1,n);
Set[a]=0;
AllSubSet(Set,a+1,n);
Set[a]=temp;
}
}
int main()
{
int n=0;
int Set[31]={};
char input[160]={};
char Set_1[31][7]={};
gets(input);
int j=0;
int k=0;
for(int i=0;i<160;i++)
{
if(input[i]=='\0')
break;
if(input[i]==' ')
{
Set[j]=atoi(Set_1[j]);
j++;
k=0;
continue;
}
else
{
Set_1[j][k]=input[i];
k++;
}
}
Set[j]=atoi(Set_1[j]);
n=j+1;
AllSubSet(Set,0,n);
printf("%.0f",sum);
return 0;
}
但是就事论事来说,为什么2和3还是超时了? 求指点!