用c++写代码第一行,整数N(0<N<100),代表可以预测N天, 之后若干行(<20行),每一行输入N个整数,代表某支股票每天的价格。 最后一行,输入0结束。输出 小明应该买第几支股票(1序)和该股票的利润。 样例输入 Copy 6 7 1 5 3 6 4 3 5 6 2 5 4 8 6 5 9 4 2 0 样例输出 Copy 1 7
时间: 2024-04-15 11:30:23 浏览: 110
你可以使用以下代码来实现这个功能:
```cpp
#include <iostream>
#include <vector>
int main() {
int N;
std::cin >> N;
std::vector<std::vector<int>> prices;
int stockNum = 1;
int maxProfit = 0;
while (true) {
std::vector<int> dailyPrices;
for (int i = 0; i < N; i++) {
int price;
std::cin >> price;
dailyPrices.push_back(price);
}
if (dailyPrices[0] == 0) {
break;
}
int minPrice = dailyPrices[0];
int profit = 0;
for (int i = 1; i < N; i++) {
if (dailyPrices[i] < minPrice) {
minPrice = dailyPrices[i];
} else if (dailyPrices[i] - minPrice > profit) {
profit = dailyPrices[i] - minPrice;
}
}
if (profit > maxProfit) {
maxProfit = profit;
stockNum = prices.size() + 1;
}
prices.push_back(dailyPrices);
}
std::cout << stockNum << " " << maxProfit << std::endl;
return 0;
}
```
这段代码首先读取输入的整数N,然后使用一个二维向量`prices`来存储每支股票每天的价格。然后进入一个循环,每次读取一行N个整数作为股票的价格,直到遇到0为止。
在每次读取完一行价格后,使用一个变量`minPrice`来记录当前股票的最低价格,使用变量`profit`来记录当前股票的最大利润。遍历每天的价格,如果当前价格比`minPrice`小,则更新`minPrice`;如果当前价格减去`minPrice`大于`profit`,则更新`profit`。最后,如果当前股票的利润大于之前的最大利润,则更新最大利润和对应的股票序号。
最后输出股票序号和最大利润。
希望能帮到你!如果还有其他问题,请随时提问。
阅读全文