抽签
来源:互联网 发布:他趣是什么软件 编辑:程序博客网 时间:2024/04/28 16:04
<span style="font-size:18px;"></span><pre name="code" class="cpp">原始代码:
#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn=50;int main(){ int n,m,k[maxn]; scanf("%d%d",&n,&m); for(int i=0;i<n;i++) { scanf("%d",&k[i]); } bool f=false; for(int a=0;a<n;a++) for(int b=0;b<n;b++) for(int c=0;c<n;c++) for(int d=0;d<n;d++) { if(k[a]+k[b]+k[c]+k[d]==m) { f=true; } } if(f) puts("Yes"); else puts("No"); return 0;}
<span style="font-size:18px;"></span><pre name="code" class="cpp">第一次优化,k[d]=m-k[a]-k[b]-k[c],搜索k[d]的值就可以
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int maxn=10000;int n,m,k[maxn];bool binary_search(int x){ int l=0,r=n; while(r-l>=1) { int i=(l+r)/2; if(k[i]==x) return true; else if(k[i]<x) l=i+1; else r=i; } return false;}int main(){ scanf("%d%d",&n,&m); for(int i=0;i<n;i++) scanf("%d",&k[i]); sort(k,k+n); bool f=false; for(int a=0;a<n;a++) { for(int b=0;b<n;b++) { for(int c=0;c<n;c++) { if(binary_search(m-k[a]-k[b]-k[c])) f=true; } } } if(f) puts("Yes"); else puts("No"); return 0;}
<span style="font-size:18px;">二次优化,k[d]+k[c]=m-k[a]-k[b],找出 </span><span style="font-size: 18px; font-family: Arial, Helvetica, sans-serif;">k[d]+k[c]所得的数字,然后搜索</span>
<span style="font-size:18px;">#include <iostream> #include<algorithm> using namespace std; int k[100]; int kk[100]; int n; bool f; bool binary_search(int x) { int l = 0, r = n; int mid; while(l < r) { mid = (l+r)/2; if(kk[mid] == x) return true; else if(x < kk[mid]) r = mid - 1; else l = mid + 1; } return false; } int main() { int m; cin >> n >> m; for(int i=0; i<n; i++) { cin >> k[i]; } int a, b, c, d; for(int c=0; c<n; c++) { for(int d=0; d<n; d++) { kk[c*n + d] = k[c] + k[d]; } } sort(kk,kk+n*n); for(a=0; a<n; a++) { for(b=0; b<n; b++) { if(binary_search(m-k[a]-k[b])) f = true; } } if(f) cout << "Yes\n"; else cout << "No\n"; return 0; } </span>
0 0
- 抽签
- 抽签
- 抽签
- 抽签
- 抽签
- 抽签
- 抽签
- 抽签
- 抽签
- 抽签
- 抽签问题
- 抽签问题
- 抽签问题
- 抽签问题
- 5、抽签
- 抽签(蓝桥杯真题)
- 抽签程序
- 蓝桥杯 抽签
- LeetCode House Robber I II III
- Teleport Ultra/Teleport Pro的冗余代码批量清理方法
- 自定义View-4-重写onDraw
- Leetcode Regular Expression Matching
- 5天不再惧怕多线程——第一天 尝试Thread
- 抽签
- hibernate的Session的update方法
- 大学毕业4年-回顾和总结(6)-技术研发-重构之法
- PHP多维数组和日期时间函数
- 5天不再惧怕多线程——第二天 锁机制
- C++函数指针
- 5天不再惧怕多线程——第三天 互斥体
- clang 命令
- 78. Subsets