当前位置: 首页 > news >正文

3.枚举算法(一)

一.铺地毯

https://www.luogu.com.cn/problem/P1003

1.算法原理

2.代码实现

#include <iostream>using namespace std;
const int N = 1e4 + 10;
int n;
int a[N],b[N],g[N],k[N];
int x,y;int find()
{for(int i = n;i >= 1;i--){if(a[i] <= x && b[i] <= y && a[i] +  g[i] >= x && b[i] + k[i] >= y){return i;} }return -1;
}int main()
{cin >> n;for(int i = 1;i <= n; i++){cin >> a[i] >> b[i] >> g[i] >> k[i];}cin >> x >> y;cout << find() << endl;return 0;
}

二.回文日期

https://www.luogu.com.cn/problem/P2010

1.算法原理

2.代码实现

//策略三: 枚举所有的月日的组合
#include <iostream>using namespace std;int x,y;
int day[] = {0,31,29,31,30,31,30,31,31,30,31,30,31};int main()
{cin >> x >> y;int ret = 0;for(int i = 1;i <= 12; i++){for(int j = 1;j <= day[i]; j++){int k = j % 10 * 1000 + j / 10 * 100 + i % 10 * 10 + i /10;int num = k * 10000 + i * 100 + j;if(x <= num && num <= y){ret++;}}}cout << ret << endl;return 0;
}
//策略一: 枚举所有的日期#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;int x,y;
int day[] = {0,31,29,31,30,31,30,31,31,30,31,30,31};bool check(string s)
{int date = atoi(s.c_str());int ri = date % 100;int month = (date % 10000 - ri) / 100;int year = (date - month - ri) / 10000;// cout << year << " " << month << " " << ri << endl;if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){day[2] = 29;}else{day[2] = 28;}if(month >= 1 && month <= 12 && ri <= day[month] && ri >= 1){return true;}return false;
}int main()
{cin >> x >> y;int ret = 0;for(int i = x;i <= y; i++){string s1 = to_string(i);string s2 = s1;reverse(s1.begin(),s1.end());if(s1 == s2 && check(s1)){ret++;}}cout << ret << endl;return 0;
}
// //策略二: 枚举所有的年的组合
#include <iostream>using namespace std;int x,y;
int days[] = {0,31,29,31,30,31,30,31,31,30,31,30,31};int main()
{cin >> x >> y;int ret = 0;for(int i = x / 10000;i <= y / 10000;i++){int day = i / 1000 + i / 100 % 10 * 10;int month = i % 10 * 10 + ((i % 100 - i % 10) / 10);if(month >= 1 && month <= 12 && day >= 1 && day <= days[month] && i * 10000 + month * 100 + day <= y){// cout << i << " " << month << " " << day << endl;ret++;}}cout << ret << endl;return 0;
}

三.扫雷

https://www.luogu.com.cn/problem/P2327

1.算法原理

2.代码实现

#include <iostream>using namespace std;const int N = 1e4 + 10;
int a[N],b[N];int n;int check1()
{a[1] = 0;for(int i = 2;i <= n+1;i++){a[i] = b[i-1] - a[i-1]-a[i-2];if(a[i]<0||a[i]>1){return 0;}}if(a[n+1] == 0){return 1;}return 0;
}int check2()
{a[1] = 1;for(int i = 2;i <= n+1;i++){a[i] = b[i-1] - a[i-1]-a[i-2];if(a[i]<0||a[i]>1){return 0;}}if(a[n+1] == 0){return 1;}return 0;
}int main()
{cin >> n;for(int i = 1;i <= n;i++){cin >> b[i];}int ret = 0;ret += check1();ret += check2();cout << ret << endl;return 0;
}

=========================================================================

四.子集

https://leetcode.cn/problems/subsets/description/

1.算法原理

2.代码实现

class Solution {
public:vector<vector<int>> subsets(vector<int>& nums) {vector<vector<int>> ret;int n = nums.size();for(int st = 0;st < (1 << n);st++){vector<int> tmp;for(int i = 0;i < n ;i++){if((st >> i) & 1){tmp.push_back(nums[i]);}}ret.push_back(tmp);}return ret;}
};
http://www.dtcms.com/a/542061.html

相关文章:

  • 网站开发需求收集网站建设和维护工作内容
  • 建设银行昆山分行网站wordpress本站导航在哪里
  • 房地产网站建设策划书如何对网站进行维护
  • Lambert W 函数简要探讨
  • 为什么要避免使用 `SELECT *`?
  • 网站怎么做外链接中国建设银行e路护航网银安全组件
  • 网页设计网站名字做网站开发数据库怎么写
  • 创建es索引
  • Spring Boot项目中如何实现接口幂等
  • 深圳高端网站开发网上卖产品怎么推广
  • hexo框架做网站wordpress 变换模板
  • 国美在线网站建设淄博做网站推广
  • 网站提交网址网店美工实训报告总结2000字
  • 建设一个电子文学网站资金多少东莞建网站平台
  • 中山网站建设设计二级域名网站
  • 做营销型网站的公司建设工程规范发布网站
  • 网站策划是做什么的网站制作400哪家好
  • app网站开发培训自己的免费网站空间
  • 中国建设银行官方网站企业上海 政务网站建设情况
  • sqlmap注入
  • 自己的电脑怎么做网站装饰装修材料
  • Rust性能炼金术:如何用零成本抽象锻造系统级利器
  • 门户网站举例项目营销推广计划
  • EKF融合IMU的Cartographer SLAM建图
  • 当网络里混入“假网关”:用 Scapy 写一个 DHCP 欺骗检测器(附完整代码与讲解)
  • 网站开发设计费 怎么入账建设网站的知识
  • Windows:解决电脑开机解锁后黑屏但鼠标可见可移动的问题
  • 网站根目录验证文件域名注册免费平台
  • 基于PyTorch的YOLOv5目标检测模型训练脚本详解
  • FPGA设计实践之电子秒表设计(VHDL版——ISE14.7)