社区讨论

炒股求助

学术版参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mjjnxzit
此快照首次捕获于
2025/12/24 14:59
2 个月前
此快照最后确认于
2025/12/24 15:11
2 个月前
查看原帖
啥也没干一直 DONE,不是TLE就是RE
求debug,或者求一份能正常跑的代码
CPP
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

int n, D; //股票数,天数 
ll m; //初始资金 
int L; //交易最小单位 
double _alpha; //手续费 
int com_min; //最低手续费
double _beta; //卖出税率
int Kmax; //单日委托上限 

void readline(string &to) {
	getline(cin, to);
}
string op;

struct Stock {
	string date, code; //交易日、股票代码 
	double open; //开盘价 
	double high, low, close; //最高价、最低价、收盘价 
	int volume; //成交量 
	double amount; //成交额 
	double amplitude; //振幅,表示百分数
	double pct_chg; //涨跌幅(相对前日收盘,百分数) 
	double change; //涨跌额,元/股
	double turnover; //换手率,百分数 
};
vector<vector<Stock>> Datas;

double s2d(string str) {
	double ret = 0;
	int i;
	for (i = 0; i < str.size(); i++) {
		ret = ret * 10 + str[i] - '0';
		if (str[i] == '.')
			break;
	}
	if (i == str.size())
		return ret;
	i++;
	double pw = 0.1;
	for (; i < str.size(); i++, pw = pw * 0.1) 
		ret = ret + (str[i] - '0') * pw;
	return ret;
}
int Read_Stock(Stock &to) {
	string str;
	cin >> str;
	if (str[0] == 'F')
		return 0;
	int lst = 0;
	
	int i = 0;
	
	while (i < str.size() && str[i] != ',') i++;
//	to.date = str.substr(lst, i - lst);
	
	lst = ++i;
	while (i < str.size() && str[i] != ',') i++;
//	to.code = str.substr(lst, i - lst);
	
	lst = ++i;
	while (i < str.size() && str[i] != ',') i++;
//	to.open = s2d(str.substr(lst, i - lst));
	
	lst = ++i;
	while (i < str.size() && str[i] != ',') i++;
//	to.high = s2d(str.substr(lst, i - lst));
	
	lst = ++i;
	while (i < str.size() && str[i] != ',') i++;
//	to.low = s2d(str.substr(lst, i - lst));
	
	lst = ++i;
	while (i < str.size() && str[i] != ',') i++;
//	to.close = s2d(str.substr(lst, i - lst));
	
	lst = ++i;
	while (i < str.size() && str[i] != ',') i++;
//	to.volume = s2d(str.substr(lst, i - lst));
	
	lst = ++i;
	while (i < str.size() && str[i] != ',') i++;
//	to.amount = s2d(str.substr(lst, i - lst));
	
	lst = ++i;
	while (i < str.size() && str[i] != ',') i++;
//	to.amplitude = s2d(str.substr(lst, i - lst));
	
	lst = ++i;
	while (i < str.size() && str[i] != ',') i++;
//	to.pct_chg = s2d(str.substr(lst, i - lst));
	
	lst = ++i;
	while (i < str.size() && str[i] != ',') i++;
//	to.change = s2d(str.substr(lst, i - lst));
	
	lst = ++i;
	while (i < str.size() && str[i] != ',') i++;
//	to.turnover = s2d(str.substr(lst, i - lst));
	return 1;
}
int Get_Stock(int x) { //读入第x天开盘时的股票信息,存入 0~n-1 
	for (int i = 0; i < n; i++)
		if (!Read_Stock(Datas[x][i]))
			return 0;
	return 1;
}

struct Oper {
	bool typ;
	string code;
	int cnt;
};
vector<Oper> opers;
void print(Oper x) {
	cout << (x.typ ? "SELL " : "BUY ");
	cout << x.code << ' ' << x.cnt << '\n';
//	assert(x.cnt % L == 0);
}

void make_dec() { //做决策 
	
}

int main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	cin >> op >> n >> D >> m >> L >> _alpha >> com_min >> _beta >> Kmax;
	Datas.assign(D + 5, vector<Stock>(n + 1));
	Get_Stock(0);
	make_dec();
	
	for (int days = 1; ; days++) {
//		for (auto i: opers)
//			print(i);
		cout << "DONE";
		fflush(stdout);
		
		int fff = Get_Stock(days);
		if (fff == 0)
			break;
		make_dec();
	}
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...