Description
Write a generic function int find_lower_bound(T seq[], int n, const T& value). The function returns the index of the largest element in the given sequence that is less than the given value. If multiple elements satisfy, return the one with smallest index. Return -1 if no such element exists. You are ensured that the type T can be compared using operator '<'.
Your submitted source code should include the implementation of the find_lower_bound function template.
No main() function should be included.
// Problem#: 14401
// Submission#: 3726604
// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/
// All Copyright reserved by Informatic Lab of Sun Yat-sen University
#include <iostream>
#include<cstdlib>
#include<string>
using namespace std;
template<typename T>
int find_lower_bound(T seq[], int n, const T& value){
int index=0;
for(int i=0;i<n;i++){
if(seq[i]<value) {index=i;break;}
if(i==n-1){
return -1;
}
}
for(int i=index+1;i<n;i++){
if(seq[i]<value && seq[index]<seq[i]){
index=i;
}
}
return index;
}
conclusion:嵌套循环的逻辑出现问题,比如如何判断seq中没有比value小的数 如果有立马break 如果直到最后(i=n-1)了还没有退出循环,即认定seq中没有比value小的数 return -1 满足题目要求。