穷举法解决组合问题

来源:互联网 发布:json decode 出现null 编辑:程序博客网 时间:2024/05/18 02:56

*/

* Copyright (c) 2011, 烟台大学计算机学院

* All rights reserved.

* 作 者: 孙培培

* 完成日期:2012 年 11月8日

* 版 本 号:v1.0 *

 * 输入描述:略

问题描述:求和

* 程序输出:见下

 * 问题分析问题分析与算法设计:本问题实际上是一个排列问题,即求从 5 个中取 3 个进行排列
的方法的总数。首先对五本书从 1 至 5 进行编号,然后使用穷举的方法。假设三个人分别
借这五本书中的一本,当三个人所借的书的编号都不相同时,就是满足题意的一种借阅方法。
下面是程序及其注释,要注意利用三重循环“穷举”

* 算法设计:略

*/


/*
【程序6】
【项目 2:穷举法解决组合问题】先阅读例题,领会穷举法(意为“穷尽式列举”,也
称枚举)的思想,然后自行选题进行解决,掌握这种程序设计的一般方法。
例题:小明有五本新书,要借给 A,B,C 三位小朋友,若每人每次只能借一本,则可
以有多少种不同的借法?

*/

 

#include <iostream>
using namespace std;
int main()
{
 int a,b,c,count=0;

                cout<<"小明借书给三位小朋友书的方案有:"<<endl;
                  for(a=1;a<=5;a++) //穷举 a借 5本书中的1本的全部情况
                   for(b=1;b<=5;b++) //穷举 b借 5本书中的一本的全部情况
                    for(c=1;c<=5;c++) //穷举 c借 5本书中的1本的全部情况
                  if(a!=b&&c!=a&&c!=b) //判断三个人借的书是否不同
                  {
                    ++count;
                    cout<<count<<": "<<a<<", "<<b<<", "<<c<<endl;//输出方案
     if(count%5==0)
      cout<<endl;
                   }
    return 0;
}

 

#include <iostream>
using namespace std;
int main()
{
 int a,b,c,count=0;

            cout<<"小明借书给三位小朋友书的方案有:"<<endl;
               for(a=1;a<=5;a++) //穷举 a借 5本书中的1本的全部情况
               for(b=1;b<=5;b++) //穷举 b借 5本书中的一本的全部情况
               for(c=1;c<=5;c++) //穷举 c借 5本书中的1本的全部情况
                if(a!=b&&c!=a&&c!=b) //判断三个人借的书是否不同
                  {
                   ++count;
                   cout<<count<<": "<<a<<", "<<b<<", "<<c<<endl;//输出方案
          if(count%5==0)
        cout<<'\n';
                     }
    return 0;
}

 

一样的

 

原创粉丝点击