|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目描述:
- 给定一个整数数组A,以及一个整数target作为目标值,返回满足i<j<k且A[i] + A[j] + A[k] == target 的元组i,j,k
- 注意:输入端第一行第一个字符是target,字符之间用逗号隔开。
- 例:输入8,1,1,2,2,3,3,4,4,5,5
- 输出20
- 因为(1,2,5)8个
- (1,3,4)8个
- (2,2,4)2个
- (2,3,3)2个
复制代码
- #include <iostream>
- #include <string>
- #include <vector>
- using namespace std;
- int solution(string temp){
- int target;
- vector<int> input;
- target = (int)(temp[0] - '0');
- for(int i = 1; i < temp.size(); i++){
- if(temp[i] == ',') continue;
- input.push_back((int)(temp[i] - '0'));
- }
-
- int res = 0;
- int temp1 = target;
- for(int i = 0; i < input.size()-2; i++){
- for(int j = i+1; j < input.size()-1; j++){
- temp1 = temp1 - input[i] - input[j];
- for(int k = j+1; k < input.size(); k++){
- if(temp1 == input[k]) res++;
- }
- temp1 = target;
- }
- }
- return res;
- }
- int main(void){
- string temp;
- cout << "send string" << endl;
- cin >> temp;
- cout << solution(temp) << endl;
- return 0;
- }
复制代码
注意事项:
1.这道题的一个难点是怎么从终端读取数据
2.以上使用简单的暴力法,应该还有更好的方法,学到了再更新。 |
|