zoukankan      html  css  js  c++  java
  • 15个球,6个位置,求按递增序列输出不同的摆法 DFS

    贴代码:

    View Code
     1 #include <cstdio>
     2 #define MAXN 160000
     3 int a[MAXN][6];
     4 int cur;
     5 int st[6];
     6 //表示要去第i个位置放球,还有sum个球没放
     7 void DFS(int i,int sum)
     8 {
     9     int j,k;
    10     if(i==5)//放最后一个位置,那么直接把剩下的球都放在该位置上
    11     {
    12         st[i] = sum;
    13         for(j=0; j<6; ++j)  //放数组里保存起来
    14             a[cur][j] = st[j];
    15         cur++;
    16         return;
    17     }
    18     for(k=0; k<=sum; ++k)//不是最后一个位置,该位置能放0-sum个球
    19     {
    20         st[i] = k;  //让该位置放k个球
    21         DFS(i+1,sum-k);//那么放剩下位置时候就只要放sum-k个球了
    22     }
    23 }
    24 int main()
    25 {
    26     //freopen("out.cpp","w",stdout);
    27     DFS(0,15);
    28     for(int i=0; i<cur; ++i)//输出结果
    29     {
    30         printf("NO.%d   ",i);
    31         for(int j=0; j<6; ++j)
    32             printf("%d ",a[i][j]);
    33         puts("");
    34     }
    35     return 0;
    36 }
  • 相关阅读:
    自定义线性表
    网站关键词抓住热点话题获取长尾关键词 给网站增添流量(图)
    Hibernate常见注解说明
    面试问题java基础
    Spring常见的注解说明
    poj3268
    poj3273
    poj3250
    poj3277
    poj3253
  • 原文地址:https://www.cnblogs.com/allh123/p/3016173.html
Copyright © 2011-2022 走看看