试题 算法训练 活雷锋
内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s
问题描述
寻找“活雷锋”:经过警察叔叔的走访调查,知道了“活雷锋”每次做完好事后,别人问起他的名字时,他总是说自己是“雷锋16”,而他家的门上也写着数字“16”。你能通过这个线索找到“活雷锋”的家吗?
输入格式
输入4行5列的数字,查找16
输出格式
输出1行,如果有16就输出‘yes',没有就输出’no'。
样例输入
一个满足题目要求的输入范例。
例:
1 2 3 4 5
2 3 4 5 6
21 3 3 4 6
2 4 5 6 16
样例输出
与上面的样例输入对应的输出。
例:
yes
数据规模和约定
输入数据中每一个数的范围。
例:0<n,m<1000000。
题解:
#include <iostream> #include <algorithm> using namespace std; bool f2(int num[5]) { int left = 0; int right = 4; int mid; while (left <= right) { mid = left + (right - left) / 2; if (16 > num[mid]) { left = mid + 1; } else if (16 < num[mid]) { right = mid - 1; } else { return true; } } return false; } int main() { int a[4][5]; for (int i = 0; i < 4; i++) { for (int j = 0; j < 5; j++) { cin >> a[i][j]; } } for (int i = 0; i < 4; i++) { sort(a[i], a[i] + 5); if (f2(a[i])) { cout << "yes"; return 0; } } cout << "no"; return 0; }
二分加排序,要不然应该会超时。