查找给定序列是单调的还是严格单调的
finding if a given sequence is monotonic or strictly monotonic
我正在实现序列的简单解决方案,以查看它是单调的还是严格的单调。我尝试了不同的输入,角落/最坏情况,它有效,为了更好地呈现问题,以下是问题的具体陈述。
确定数字序列是严格单调的还是单调的。
输入:
包含整数 n (2 ≤ n ≤ 10^9( - 序列中的元素数。它后面有 n 个元素。
输出:
如果序列是严格单调的,则写">2",否则如果序列是单调的,则在其他情况下写"1"和"0"。
我的代码:
#include <iostream>
//#include <cmath>
using namespace std;
int main()
{
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
int n, a, b, p, q, e, c; e = 0; q = 0; p = 0;
cin >> n >> a;
for (int i = 0; i < n - 1; i++)
{
cin >> b;
if (a > b) { p = 1;
if (q) { cout << 0; return 0; }
}
if (a < b) { q = 1;
if (p) { cout << 0; return 0; }
}
if (a == b) { e = 1; }
a = b;
}
if (e) { cout << 1; }
else { cout << 2; }
return 0;
}
我的代码虽然没有通过我大学的判断,但它给出了时间限制错误。 我的代码可能有什么问题?我的意思是,你必须遍历所有 n,这段代码是 O(n(,n <= 10^9。
我试过你的代码。
我不得不移除两个 freopen,这打破了原本似乎是 MRE 的东西。
它已成功编译。
我输入 4,用于 4 个输入,然后
输入 2
1
输出为 0。
a( 您的代码忽略第二个值
之后的所有内容 b( 您的代码提前
终止 c( 对于严格单调递减序列(未忽略的部分("2,1",它输出"其他情况"的值
我想这并不能回答你脑海中的问题。
但是你将不得不问那个,因为你写的那个我认为回答了。
如果您的问题实际上是"我如何找出代码的哪一部分导致错误?我建议使用调试器:
如何使用gdb进行调试?
如何在代码块中调试?
或者,更一般地说,
https://ericlippert.com/2014/03/05/how-to-debug-small-programs/
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- 在C++/Linux中设置单调时钟的一些技巧
- 在C++中查找文件
- 模板元程序查找相似的连续类型名称
- 在UNIX系统中使用DIR查找文件的字节大小
- 查找最接近的大于当前数字的数字的索引
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 查找后更改类变量
- 使用正则表达式regex_search在字符串中查找字符串
- 使用gcc从静态链接的文件中查找可选符号
- 在C++中查找范围的长度
- 算法问题:查找从堆栈中弹出的所有序列
- 在Windows中查找扬声器输出的当前音量级别
- 如何在C++中使用X509证书模在令牌中查找私钥
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 在 for 循环中查找问题时遇到困难
- 如何在文件中查找字节序列
- 试图创建一个多线程程序来查找0-100000000之间的总素数
- 查找给定序列是单调的还是严格单调的