2、3超时求教
查看原帖
2、3超时求教
916797
ffff0505k楼主2022/12/24 10:46

纯纯大冤种,用递归的屑 没有发现可以用幂来做,于是写了一个递归

#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还是超时了? 求指点!

2022/12/24 10:46
加载中...