【算法设计与分析】 |
您所在的位置:网站首页 › 回溯法指派问题 › 【算法设计与分析】 |
我前几天写了一篇csdn博客文章:【算法设计与分析】——整数划分问题,使用的是递归方法,今天准备使用回溯法啦啦啦啦啦~ 上一篇链接:算法设计与分析——整数划分问题(递归法) 首先我给大家画了一个流程图:
因为csdn博客中上传的视频目前仅支持腾讯优酷bilibili,所以我上传到资源啦,但是免费哦~ 视频讲解链接:整数划分问题(回溯法)视频讲解 代码实现大家如果还是看不懂代码,可以自己选取一个简单的例子在草稿纸上演示一遍哦~ #include int nums[100]; //nums用来存放需要放入的数据 int count = 0; //count用来记录一共有多少种划分方法 int integerDivide(int cur,int sum,int p,int n){ //cur表示当前使用的数组位置 sum表示当前使用位置中所存放的数据之和 p表示当前要划分的数 n表示需要划分的数 if(sum > n) return; if(sum == n){ count++; printf("%d=",n); for (int i = 0; i 0;i--){ //回溯法 nums[cur] = i; integerDivide(cur+1,sum+i,i,n); } return count; } int main(){ int n,s; printf("请输入你想要划分的正整数n:\n"); scanf("%d",&n); s=integerDivide(0,0,n,n); printf("该正整数%d一共有%d种划分方法!\n",n,s); return 0; } 结果示例 示例一![]() ![]() ![]() |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |