NC200633. 来来来 比比咱谁更聪明
描述
输入描述
输入要求:首先输入n表示瓶子的容量,接下来输入m表示杯子的数量,
接下来输入m个数表示杯子的容量k(0<n<=1000,0<m<=1000,0<k<=1000,n,m,k都是整数
输出描述
输出要求:如果能赢则输出Y,否则输出N。
示例1
输入:
10 4 2 3 6 8
输出:
N
C++14(g++5.4) 解法, 执行用时: 4ms, 内存消耗: 504K, 提交时间: 2020-04-11 16:27:16
#include<bits/stdc++.h> using namespace std; int ans[1005],a[1005]; int main(){ int n,m; cin>>n>>m; for(int i=0;i<m;i++){ cin>>a[i]; } for(int i=1;i<=n;i++){ for(int j=0;j<m;j++){ if(i>=a[j]&&!ans[i-a[j]])ans[i]=1; } } if(ans[n])cout<<"Y"<<endl; else cout<<"N"<<endl; }
C++11(clang++ 3.9) 解法, 执行用时: 3ms, 内存消耗: 484K, 提交时间: 2020-01-09 15:32:46
#include <bits/stdc++.h> using namespace std; int f[1005],a[1005]; int main() { int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(i>=a[j]&&!f[i-a[j]]) f[i]=1; if(f[n]) puts("Y"); else puts("N"); }