这道题容易迷
可以想象一下这个过程
这道题使用结构体是真的妙
#include<iostream> using namespace std; struct inform{ int num; string name; }arr[100010]; int main(){ int n,m; cin>>n>>m; for(int i=0;i<n;i++){ cin>>arr[i].num>>arr[i].name; } int t=0; while(m--){ int a,b; cin>>a>>b; if((arr[t].num==0&&a==0)||(arr[t].num==1&&a==1)) t=(t+n-b)%n; else t=(t+n+b)%n; } cout<<arr[t].name; return 0; }
1015-零钱兑换_牛客竞赛语法入门班数组模拟、枚举、贪心习题 (nowcoder.com)
#include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; int ans=0; for(int i=0;i<=n/5;i++) { for(int j=0;j<=n/2;j++) { for(int l=0;l<=n;l++) { if(5*i+2*j+l==n) ans++; else if(5*i+2*j+l>n) break; } } } cout<<ans; }
或者
#include<iostream> using namespace std; const int N = 210; int f[N]; int main() { int w[] = {1, 2, 5}; int n; cin >> n; f[0] = 1; for(int i = 0; i < 3; i ++ ) for(int j = w[i]; j <= n; j ++ ) f[j] += f[j - w[i]];//先累加1的,再累加2的,再累加5的 cout << f[n] << endl; return 0; }
Code over!