HJ61 放苹果
题目:https://www.nowcoder.com/practice/bfd8234bb5e84be0b493656e390bdebf?tpId=37&tqId=21284&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D37&difficulty=undefined&judgeStatus=undefined&tags=&title=
dfs(i,x,lst)表示正在放第i个盘子的苹果,总共还剩x个苹果,lst表示上个盘子放置的苹果数(从小到大,保证1 1 5和5 1 1不会被计数两次)
1 #include<bits/stdc++.h> 2 using namespace std; 3 int m,n,cnt=0; 4 void dfs(int i,int x,int lst){ 5 if(i>n){ 6 if(x==0) cnt++; 7 return; 8 } 9 for(int j=lst;j<=x;j++) 10 dfs(i+1,x-j,j); 11 } 12 int main(){ 13 cin>>m>>n; 14 dfs(1,m,0); 15 cout<<cnt; 16 }
HJ62 查找输入整数二进制中1的个数
1 #include<bits/stdc++.h> 2 using namespace std; 3 int Work(int x){ 4 int cnt=0; 5 for(int i=0;i<31;i++){ 6 if(x&(1<<i))cnt++; 7 } 8 return cnt; 9 } 10 int main(){ 11 int n; 12 while(cin>>n){ 13 cout<<Work(n)<<endl; 14 } 15 }
标签:cnt,试题库,int,dfs,lst,HJ61,HJ70,苹果 From: https://www.cnblogs.com/AlenaNuna/p/18417897