整除15问题-贪心算法算法设计-C.doc

整除15问题-贪心算法算法设计-C.doc

ID:57283193

大小:19.50 KB

页数:6页

时间:2020-08-09

整除15问题-贪心算法算法设计-C.doc_第1页
整除15问题-贪心算法算法设计-C.doc_第2页
整除15问题-贪心算法算法设计-C.doc_第3页
整除15问题-贪心算法算法设计-C.doc_第4页
整除15问题-贪心算法算法设计-C.doc_第5页
资源描述:

《整除15问题-贪心算法算法设计-C.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、整除15问题描述问题描述:给定一个只包含数字[0..9]的字符串,求使用字符串中的某些字符,构建一个能够整除15的最大的整数。注意,字符串中的每个字符只能使用一次。编程任务:求由给定字符串构建的能够整除15的最大整数。Input输入数据为一个只包含数字[0..9]字符串,字符串的长度为1~1000。Output将构建出的最大整数输出。如果无法构建出能够整除15的整数,请输出“impossible”SampleInput02041SampleOutput4200Hint从原来的字串中选择出最少最小的数扣

2、除以满足整除3和5的要求。把0~9数分为如下几类:0,3,6,9:这四种数不影响2,5,8:除3余21,4,7:除3余1这个题目,考虑能否满足整除5的情况,这比较简单,不详述。只要能满足整除5,进行如下步骤:然后再考虑从原字串中删除最少而且最小的数使得满足整除3。有以下几种情况:情况一:这个数上各位数字和除3余0。不用删除操作。情况二:给定的数上各位数字和除3余1。那么只要删除余1的那一类数中最小的一个。如果没有数串中没有余1的数,就删除两个余2的数。情况三:给定的数上各位数字和除3余2。那么只要删除

3、余2的那一类数中最小的一个。如果没有数串中没有余2的数,就删除两个最小的余1的数。最后,剩余的数串以最大的并且以满足整除5的要求输出。在0存在的时候,就按计数的顺序输出即可。如果在数串中没有0,则必须有个5放在个位。代码实现:#include"iostream"#include"cstring"#include"cstdio"usingnamespacestd;#defineN10typedefstruct{intx;boolbo;//记住此数是否已用intrest;//记住该数除3的余数}node;

4、nodea[N];intonefast(intlow,inthigh){//一次快排intkey=a[low].x;a[0].x=key;while(low=key)++low;a[high].x=a[low].x;}a[high].x=a[0].x;returnhigh;}voidfsort(intlow,inthigh){

5、//快速排序if(low0;i--){if(a[i].rest==1&&a[i].bo==false){a[i].bo=true;flag=i;break;}}if(flag>0){find(len);}else{for(intj=l

6、en;j>0;j--){if(a[j].rest==2&&a[j].bo==false){++flag;a[j].bo=true;if(flag==1)break;}}if(flag==1)find(len);elseif(flag<1){cout<<"impossible"<0;i--){if(a[i].rest==2&&a[i].bo==false){a[i].bo=true;flag=i;break;}}if(flag>0){find(l

7、en);}else{for(intj=len;j>0;j--){if(a[j].rest==1&&a[j].bo==false){++flag;a[j].bo=true;if(flag==1)break;}}if(flag==1)find(len);elseif(flag<1){cout<<"impossible"<

8、x==5){flag=i;break;}}if(flag<0){//字符串中没有0且没有5时。cout<<"impossible"<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。