zoukankan      html  css  js  c++  java
  • hdu1258Sum It Up

    这题主要是重复问题怎么删除 由于是排好序的 有重复的 肯定是相邻的

    在同一层上的结点值 保证不相同就行 不同层可以相同 比如 4 = 2+1+1 可以有两个1

    具体看代码

    View Code
     1 #include <stdio.h>
     2 #include<string.h>
     3 int a[1001],n,s,v,y,flag,num[1001],ch;
     4 void dfs(int x, int i,int v)
     5 {
     6     int j,k;
     7     y+= x;
     8     num[v] = x;
     9     if(y == s)
    10     {
    11             for(k = 1 ; k < v; k++)
    12             printf("%d+",num[k]);
    13             printf("%d\n",num[v]);
    14             flag = 1;
    15     }
    16     else
    17     {
    18         for(j = i+1 ; j <= n ; j++)
    19         {
    20             if(a[j]!=a[j-1]||j == i+1)//同一层结点值不同或者不同层
    21             {
    22                 if(y+a[j]<=s)
    23                 {
    24                     dfs(a[j],j,v+1);
    25                     y-=a[j];
    26                 }
    27             }
    28 
    29         }
    30     }
    31 }
    32 int main()
    33 {
    34     int i, j;
    35     while(scanf("%d%d", &s,&n)&&s&&n)
    36     {
    37         flag = 0;
    38         for(i = 1 ; i <= n ; i++)
    39             scanf("%d",&a[i]);
    40         printf("Sums of %d:\n",s);
    41         a[0] = -1;
    42         for(i = 1 ; i <= n ; i++)
    43             if(a[i]!=a[i-1]&&a[i]<=s)
    44             {
    45                 y = 0;
    46                 dfs(a[i],i,1);
    47             }
    48         if(!flag)
    49         printf("NONE\n");
    50     }
    51     return 0;
    52 }
  • 相关阅读:
    POJ2442 Sequence
    等式
    GYM101635E Ingredients
    单片机之PID算法
    信号完整性一
    C程序编程规范一
    FATFS文件系统的移植
    FreeRTOS移植到STM32上的移植过程
    codeblocks+SDCC开发51单片机
    java5种打印数组
  • 原文地址:https://www.cnblogs.com/shangyu/p/2588215.html
Copyright © 2011-2022 走看看