算法问题
来源:互联网 发布:Linux修改进程名字 编辑:程序博客网 时间:2024/06/08 16:48
试题描述
输入
输出
输入示例
3 10
1 3 5
1 3 5
输出示例
Yes
#include<iostream>#include <algorithm>using namespace std;int main(){int n,m;int i,j,k,l,sum=0; int a[100];scanf("%d%d",&n,&m);for(i=0;i<n;i++){scanf("%d",&a[i]);}//数据存放sort(a,a+n);//数据排序for(i=0;i<n;i++){sum+=a[i];if(sum>=m){sum=0;break;}for(j=0;j<n;j++){sum+=a[j];if(sum>=m){break;}for(k=0;k<n;k++){sum+=a[k];if(sum>=m){break;}for(l=0;l<n;l++){sum+=a[l];if(sum>m){break;}if(sum==m){cout<<"YES\n"<<endl; return 0;}sum-=a[l];}sum-=a[k];}sum-=a[j];}sum=0; }
cout<<"NO"<<endl;return 0;}看到网上关于这道题的csdn博客,大都直接用了四个循环,这样子时间复杂度为n的四次方,这样的算法肯定是不行的。于是思考了一种优化方式,先进行排序,然后选择是否要进入下一层训话,这样子,时间复杂度有所降低,但是不稳定,不知道还有没有更好的优化方法,希望可以学习,欢迎大家留言评论
阅读全文
0 0
- 算法问题
- 算法问题
- 算法问题
- 算法问题
- 算法--基础算法问题
- [ 算法]经典程序算法问题
- 数据结构算法问题 约瑟夫问题
- 算法问题分析--邮票问题
- 算法的问题
- Fibonacci数列问题算法
- 几个算法的问题
- LCS问题算法
- 算法问题求解
- 指派问题匈牙利算法
- 背包问题的算法
- 公交换乘算法问题
- 递归算法 背包问题
- “背包问题”的算法
- IntentService使用详解和实例介绍
- ZOJ
- 随机数的方法
- ANR分析-WaitingPerformingGc
- Android N指纹识别
- 算法问题
- 《正义之心-为什么人们总是相信我对你错》-读后感
- if break、if continue和if return三者之间的区别
- 【机器学习实战】第12章 使用FP-growth算法来高效发现频繁项集
- hostname
- 文章标题
- 分享一个白帽交流灵感的社区——先知技术安全社区
- Caffe从入门到精通07
- JS——Factory(工厂)模式