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

1-1 暴力破解-枚举

枚举:枚举所有的情况,逐个判断是否是问题的解

判断题目是否可以使用枚举:估算算法复杂度
1秒计算机大约能处理107的数据量,即O(n)=107,则O(n2)能处理的数据量就是根号107≈3162

复杂度对应的数据量是该算法能处理的最大数据量
题目数据量n<在算法复杂度下能处理的最大数据量,则该算法可行

在1秒内各复杂度的算法能处理数据的量级↓

在这里插入图片描述

可以看出,若题目有105的数据量,则不能采用O(n2)的算法,O(nlogn)是可以的

常见问题的复杂度

在这里插入图片描述

1.abc(清华大学)
在这里插入图片描述
评测系统

分析:题目的数据量n=10,可以采用三次for循环的方式,算法时间复杂度为O(n3),能处理的数据量是200,10<200,算法可行

#include<iostream>
using namespace std;
int main() {for (int a = 0; a <= 9; a++) {for (int b = 0; b <= 9; b++) {for (int c = 0; c <= 9; c++) {if (100 * a + 10 * b + c + 100 * b + 10 * c + c == 532) {cout << a << " " << b << " " << c << endl;}}}}
}

2.反序数(清华大学)
在这里插入图片描述
评测系统

分析:四位数从1000到9999,数据量<10000,直接遍历复杂度O(n)。求反序数过程复杂度O(1),总复杂度O(n),能处理的数据量约为107,10000<107,算法可行

#include<iostream>
using namespace std;
int reverse(int x) {int sum = 0;while(x!=0){sum = sum*10 + x % 10;x = x / 10;}return sum;
}
int main() {for (int i = 1000; i <= 9999; i++) {if (i * 9 == reverse(i)) {cout << i << endl;}}
}

3.对称平方数(清华大学)
在这里插入图片描述
评测系统

注:数据>=0

分析:对称 → 原数=反序数

#include<iostream>
using namespace std;
int reverse(int x) {int sum=0;while (x) {sum = sum * 10 + x % 10;x = x / 10;}return sum;
}
int main() {for (int i = 0; i <= 256; i++) {if (i*i==reverse(i*i)) {cout << i << endl;}}
}

4.与7无关的数(北京大学)
在这里插入图片描述
评测系统

#include<iostream>
using namespace std;
bool relate2(int x) { //判断某位数字是否为7while (x) {if (x % 10 == 7)return true;x = x / 10;}return false;
}
bool relate(int x) { //判断是否与7相关if (x % 7 == 0)return true;else if (relate2(x)) {return true;}elsereturn false;
}
int main() {int sum = 0;int n=0;cin >> n;for (int i = 1; i <= n; i++) {if (!relate(i)) {sum += i * i;}}cout << sum;
}

5.百鸡问题(哈尔滨工业大学)
在这里插入图片描述

评测系统

分析:xyz的取值最大为100,采用三次for循环的方式,算法时间复杂度为O(n3),能处理的数据量是200,100<200,算法可行;1/3的等式两边同乘3化为整数

#include<iostream>
using namespace std;
int main() {int n = 0;cin >> n;for (int x = 0; x <= 100; x++) {for (int y = 0; y <= 100; y++) {for (int z = 0; z <= 100; z++) {if (15 * x + 9 * y + z <= 3*n && x + y + z == 100)printf("x=%d,y=%d,z=%d\n", x, y, z);}}}
}

6.Old Bill(上海交通大学)
在这里插入图片描述

评测系统

#include<iostream>
using namespace std;
int main() {int N = 0;int first, x, y, z, last, pricemax = 0;while (cin >> N) {cin >> x >> y >> z;if (N == 0) {cout << 0;break;}bool flag = 0;for (int i = 1; i <= 9; i++) {for (int j = 0; j <= 9; j++) {int temp = 10000 * i + 1000 * x + 100 * y + 10 * z + j;if (temp < N) {break;}if (temp % N == 0 && temp / N > pricemax) {pricemax = temp / N;first = i;last = j;flag = 1;}}}if (flag == 1)cout << first << " " << last << " " << pricemax << endl;else {cout << 0 << endl;}flag = 0;}
}

相关文章:

  • 代码之困:那些让你苦笑不得的bug
  • html和css中图片加载与渲染的规则是什么?
  • 系列四十五、Spring的事务传播行为案例演示(五)#MANDATORY
  • 驱动第十天
  • libpcap获取数据包
  • 前度开发面试题
  • 【网络协议】聊聊http协议
  • linux中断下文工作队列之延迟工作(中断六)
  • 第三届字节跳动奖学金官宣开奖,13位优秀科研学子每人获10万奖学金
  • 「永不失联」产品创新与升级系列发布,预约直播“即将发车”
  • 结构体内存分配
  • 基于STC系列单片机实现定时器0扫描数码管显示定时器/计数器1作为计数器1产生频率的功能
  • mysql存在10亿条数据,如何高效随机返回N条纪录,sql如何写
  • Android使用Glide类加载服务器中的图片
  • 2023 年 Github 万圣节彩蛋
  • [PHP内核探索]PHP中的哈希表
  • 2017年终总结、随想
  • JavaScript服务器推送技术之 WebSocket
  • JSONP原理
  • Js基础知识(一) - 变量
  • JS数组方法汇总
  • Linux各目录及每个目录的详细介绍
  • maya建模与骨骼动画快速实现人工鱼
  • spring security oauth2 password授权模式
  • Vue 动态创建 component
  • 闭包--闭包作用之保存(一)
  • 工程优化暨babel升级小记
  • 每天一个设计模式之命令模式
  • 使用 QuickBI 搭建酷炫可视化分析
  • 微信小程序设置上一页数据
  • 异步
  • 用jquery写贪吃蛇
  • FaaS 的简单实践
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • #android不同版本废弃api,新api。
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (06)Hive——正则表达式
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (Java数据结构)ArrayList
  • (MATLAB)第五章-矩阵运算
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (三)Honghu Cloud云架构一定时调度平台
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (算法)N皇后问题
  • (转) Face-Resources
  • ./configure,make,make install的作用
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .htaccess配置重写url引擎
  • .Mobi域名介绍
  • .Net MVC + EF搭建学生管理系统
  • .Net 高效开发之不可错过的实用工具
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .net开发引用程序集提示没有强名称的解决办法
  • .net下的富文本编辑器FCKeditor的配置方法