司延 OI 第三章 第一节 枚举

枚举就是通过循环等的方式枚举方案,得到合法的解,直到全部枚举完为止。
(以下例题全部来自洛谷)
例题:
P1085 不高兴的津津
这是NOIP2004普及组的一道题目。

#include<cstdio>
using namespace std;
int main(){
int a,b,i,v,m=0;//a是上课时间,b是补习班时间,
//m用来存每天学习时间总长度,v记录最不高兴的天数
 for(i=1;i<=7;i++){//一周七天,共7组数据
 scanf("%d%d",&a,&b);
 if(m<(a+b)&&(a+b)>8) {//如果这天的学习时间超过8小时而且是当前学习的最大时间,就更新记录
 m=a+b;
 v=i;
  }
 }
 printf("%d",v);//按要求输出
 return 0;
 }
 /*
 这里因为输入a,b只用来做一件事情,所以我们跑一次for用过当前a,b后完全可以直接覆盖掉上次的a,b,比数组存储节省时间空间。
不过因为本题数据规模较小,这种操作在此意义不大。
 */

例题2 P1151 子数整数

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int k,i,n,sub1,sub2,sub3;
int main(){
 scanf("%d",&k);//读入要除的数
 for(i=10000;i<=30000;i++){//在题目要求的范围内枚举
  sub1=i/100;
  sub2=(i-sub1/100*10000)/10;
  sub3=i%1000;
 if(sub1%k==0&&sub2%k==0&&sub3%k==0){//有符合条件的数则输出,方案数+1
  printf("%d\n",i);
  n++;
  }
 }
 if(n==0)
  printf("No");
 return 0;
}
发布了11 篇原创文章 · 获赞 4 · 访问量 211
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览