xh410117 2015-10-29 11:32 采纳率: 40%
浏览 1355
已采纳

求大神指点一下算法,就加法的问题

图片说明
如图,求大神指点

  • 写回答

7条回答 默认 最新

  • cxlovu 2015-10-29 14:58
    关注

    哎哎哎我也是给自己醉了居然循环了两次。现在应该可以了。采纳啊亲 TAT

    #include<stdio.h>
    #include<math.h>
    
    double arry[10]; 
    double inpath[55];
    
    void init(){
        for(int i = 0; i < 100; i++)
            inpath[i] = 0;  
    }
    
    // 快速排序,升序排序 
    void quiksort(double a[],int low,int high)
    {
        int i = low;
        int j = high;  
        double temp = a[i]; 
    
        if( low < high)
        {          
            while(i < j) 
            {
                while((a[j] >= temp) && (i < j))
                { 
                    j--; 
                }
                a[i] = a[j];
                while((a[i] <= temp) && (i < j))
                {
                    i++; 
                }  
                a[j]= a[i];
            }
            a[i] = temp;
            quiksort(a,low,i-1);
            quiksort(a,j+1,high);
        }
        else
        {
            return;
        }
    }
    
    void getResult(double sum, int index, double currSum, double *inpath, 
        int step, int NumOfdata){
        int j,k;
        if(fabs(currSum - sum) < 1e-6){
            for(j = 0; j < step - 1; j++){
                printf("%lf", inpath[j]);
                printf("+"); 
            }   
            printf("%lf", inpath[j]);
            printf("\n");
            return ;
        }else if(sum - currSum > 1e-3){
            for(k = index; k < NumOfdata; k++){
                    inpath[step] = arry[k];
                    getResult(sum, k, currSum + arry[k], inpath, step + 1, NumOfdata);
            }
        }
        else return ;
    }
    
    int main(){
    
        int i;  
        double Sum;
        printf("输入的数据个数:");
        int NumOfdata;
        scanf("%d", &NumOfdata);
        printf("输入数据:");
        for(i = 0; i < NumOfdata; i++) 
            scanf("%lf", &arry[i]);
        quiksort(arry, 0, NumOfdata - 1);
        printf("输入期望的和:");
            scanf("%lf", &Sum);  
        init();
        getResult(Sum, 0, 0, inpath, 0, NumOfdata);
        return 0;
    } 
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 Stata 面板数据模型选择
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用