UVALive 5870 - Smooth Visualization

来源:互联网 发布:随机信号分析 知乎 编辑:程序博客网 时间:2024/06/08 04:49
题目大意:任何一个1~7的数由竖着一列字符表示,从下到上数是几就有几个‘+’,空余地方是‘*’,现在给定一行数,将这行数用一个矩阵表示出来,要求,相邻两列之间‘+’个数不能相差超过1,超过1了就在中间加一些列,使得最后矩阵中相邻两列相差不超过1。

。。。模拟,一列一列搞就好。


#include<cstdio>#include<iostream>#include<cstring>#include<string>#include<algorithm>#include<cmath>using namespace std;int n;char s[110];char ans[10][1100];int loc;int maxx;void PR(int x,int y){loc++;for(int i=1;i<=y;i++)ans[x-i+1][loc]='+';}void PRINT(){for(int i=1;i<=maxx;i++){for(int j=1;j<=loc;j++)printf("%c",ans[i][j]);printf("\n");}}int main(){scanf("%d",&n);for(int i=1;i<=n;i++){memset(ans,'*',sizeof(ans));loc=0;scanf(" %s",s);int ji=s[0]-'0';maxx=s[0]-'0';for(int i=1;s[i];i++)maxx=max(maxx,s[i]-'0');PR(maxx,ji);int j=0;while(s[j+1]){j++;//printf("j=%d\n",j);if(ji>s[j]-'0'){//printf("fxck1\n");for(int k=ji-1;k>s[j]-'0';k--)PR(maxx,k);}if(ji<s[j]-'0'){//printf("fxck2\n");for(int k=ji+1;k<s[j]-'0';k++)PR(maxx,k);}PR(maxx,s[j]-'0');ji=s[j]-'0';}PRINT();}return 0;}


0 0
原创粉丝点击