列出某数所有的加法式

来源:互联网 发布:oracle数据库设计文档 编辑:程序博客网 时间:2024/04/29 01:14
  1. // ***************************************************************
  2. //  Addition   version:  1.0   ·  date: 12/30/2008
  3. //  -------------------------------------------------------------
  4. //  Author: ZhangLiang
  5. //  -------------------------------------------------------------
  6. //  Copyright (C) 2008 - All Rights Reserved
  7. // ***************************************************************
  8. // 
  9. // ***************************************************************
  10. #include "stdafx.h"
  11. //////////////////////////////////////////////////////////////////////////
  12. //Get the min value
  13. inline int MinValue( int val1,int val2)
  14. {
  15.     return val1<val2? val1:val2;
  16. }
  17. //////////////////////////////////////////////////////////////////////////
  18. //Output a result
  19. int OutPut(list<int>& addition)
  20. {
  21.     for (list<int>::iterator it = addition.begin();it!=addition.end();it++)
  22.     {
  23.         cout<<*it<<" ";
  24.     }
  25.     cout<<"/n";
  26.     return 0;
  27. }
  28. //////////////////////////////////////////////////////////////////////////
  29. //list all result
  30. //sum: the operate value
  31. //addition: the container of addend
  32. //maxAddend: the max addend
  33. int Addition(int sum,list<int>& addition,int maxAddend)
  34. {      
  35.     if (0== sum)
  36.     {
  37.         OutPut(addition);
  38.         return 0;
  39.     }
  40.     for (int i = 1; i<=maxAddend;i++)
  41.     {
  42.         addition.push_back(i);
  43.         Addition(sum-i,addition,MinValue(sum-i,i));
  44.         addition.pop_back();
  45.     }
  46.     return 0;
  47. }
  48. //////////////////////////////////////////////////////////////////////////
  49. //main function
  50. int _tmain(int argc, _TCHAR* argv[])
  51. {
  52.     list<int> lstAddition;//the container of addend
  53.     int nSum = 10; // the operate value
  54.     Addition(nSum,lstAddition,nSum-1);
  55.     system("pause");
  56.     return 0;
  57. }

Addition函数是实现主要的功能函数,代码就几行而已,很简单。只是用到了递归。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 怎么办晚安角和铁陀螺 白衣服染上荧光剂了怎么办 指尖陀螺不亮了怎么办 手指陀螺不转了怎么办 月经推迟私处还老是流水怎么办 苹果手机刷机后忘记id密码怎么办 锤基意外怀孕怎么办零6 职场遇到心机婊怎么办 高二会考没过怎么办 保险柜没电了打不开怎么办 保险柜没有电了打不开怎么办 小保险箱没电了怎么办 bim墙的颜色反了怎么办 眼睛大但是无神怎么办 吃了凉的胃难受怎么办 吃凉东西胃疼怎么办 游戏只有一个分辨率选项怎么办 玩游戏心态易崩怎么办 打游戏心态炸了怎么办 赛鸽比赛回来拉稀怎么办 鸽子拉竹节水便怎么办 新买的鸽子拉稀怎么办 信鸽羽毛上长了虫子怎么办 羊肉煮熟了太硬怎么办 切菜不小心切到手指怎么办 打荷盘子端错了怎么办 学厨师不会翻锅怎么办? 在饭店上班不给工资怎么办 炒菜的左手拿不起锅怎么办?? 厨师想尽快上手炒菜怎么办? 空调吹的肩膀痛怎么办 学厨师翻锅不会怎么办 肋软骨隆鼻太硬怎么办 百度云下载速度慢怎么办 买的种子没出怎么办 铃木小r烧整流器怎么办 厨师在厨房太热怎么办 被家长投诉体罚孩子怎么办 空腹彩超喝水了怎么办 鱼把厕.所堵了怎么办 螃蟹爬进厕所里怎么办