2025-08-23 2026-05-04 题目传送门 这题不难,只需要理解题目的意思就行。 首先输入天数,然后输入每天净资产变化。 之后统计每天的净资产,可以用一个数组 aaa,但要注意题目中每个曲线所在的行。 统计净资产的最大和最小值,可以用 maxnmaxnmaxn 和 minnminnminn,以求表格大小,还是要注意每个曲线所在的行,还得注意 maxnmaxnmaxn 要初始化成 −1-1−1,而 minnminnminn 是 000,这样在 maxnmaxnmaxn 或 minnminnminn 没有被记录时,默认值就是图表的中间。 绘图前记得先初始化,绘图时对应的行可以用 maxnmaxnmaxn 减去数值求出,注意转义符。 最后输出。 完整代码: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172#include<bits/stdc++.h>using namespace std;int n,a[105],maxn=-1,minn=0,p;string s;char c[105][105];int main(){ cin>>n>>s; a[0]=0; for(int i=0;i<n;i++) { switch(s[i]) { case '+': { a[i+1]=a[i]+1; maxn=max(maxn,a[i]); //记当天开始时 break; } case '-': { a[i+1]=a[i]-1; minn=min(minn,a[i+1]); //记当天结束时 break; } case '=': { a[i+1]=a[i]; maxn=max(maxn,a[i+1]); //说不定比向上曲线更高 break; } } } p=maxn-minn+1; for(int i=0;i<p;i++) { for(int j=0;j<n;j++) { c[i][j]='.'; //初始化 } } for(int i=0;i<n;i++) { switch(s[i]) { case '+': { c[maxn-a[i]][i]='/'; break; } case '-': { c[maxn-a[i+1]][i]='\\'; //注意转义符 break; } case '=': { c[maxn-a[i]][i]='_'; break; } } } for(int i=0;i<p;i++) { for(int j=0;j<n;j++) { cout<<c[i][j]; } cout<<endl; } return 0;} 前一篇 P13428 [GCJ 2009 Qualification] Alien Language 题解
说些什么吧!