算法设计与分析上机题.docx

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法设计与分析上机题

算法设计与分析上机题第二单元 8594 有重复元素的排列问题;9718 整数因子分解;11088 整数划分的扩展问题;17082 两个有序数序列中找第k小第三单元8596 最长上升子序列;***8601最大长方体问题;10303 数字三角;11077 最长公共子字符串;11078 不能移动的石子合并第四单元8602 区间相交问题;11079 可以移动的石子合并第五单元8600 骑士问题;8603 子集和问题;17085 工作分配问题;11089 多机最佳调度抽选概率:第二三单元,9选3第四五单元,6选2机选,这15题必做题中共抽5题,还要从选做题中抽1题,共呈现6题给考生吗?第二单元 8594 有重复元素的排列问题;#include iostream#include stdio.h#include stdlib.husing namespace std;int total=0;int Findsame(char list[],int k,int i){ int mark=0; int j; for(j=k; ji; j++) { if(list[j] == list[i]) { mark = 1; break; } } if(mark==1) { return 1; } else { return 0; }}//交换元素void Swap(char a,char b){ char temp; temp=a; a=b; b=temp;}//递归全排列void Perm(char list[],int k,int m){ //产生list[k:m]的所有排列 if(k==m) // 开始index == 结束index { int i; for(i=0; im; i++) { //只剩下1个元素 printf(%c,list[i]); } printf(\n); total++; } else //还有多个元素带排列,递归产生排列 { int i; for(i=k; im; i++) { if (Findsame(list,k,i))//判断第i个元素是否在list[k,i-1]中出现过 continue; /*int mark = 0; for(int j = k; j i; j ++) { if(list[j] == list[i]) { mark = 1; break; } } if(1 == mark) continue;*/ Swap(list[k],list[i]); Perm(list,k+1,m); Swap(list[k],list[i]); } }}int main(){ int n; scanf(%d,n); char list[n]; scanf(%s,list); Perm(list,0,n); printf(%d,total); return 0;}9718 整数因子分解;#include iostreamusing namespace std;#include stdio.h#include stdlib.hint total=0;void count(int n){ if(n==1) { total++; } else { int i; for(i=2;i=n;i++) { if(n%i==0) { count(n/i); } } }}int main(){ int n; scanf(%d,n); count(n); printf(%d,t

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档