ZCMU-1038


其实感觉不太难,读懂题意就行,我一开始没有仔细去读感觉就很懵。其题目意思就是一段字符串含有数字和'<'或者'>',一开始从左开始遍历,遇到'>'这类东西换方向,如果有多次遇到就删之前那一个;遇到数字就记下,并减去,一直减到0,就删掉

思路:无非用一个int类型的数组存放数字打印个数,以及模拟这个过程,

代码:

#include<stdio.h> 
#include<string.h>
/*之前没有认真看题目*/ 
char x[110],y[110];
/*两个字符窜数组,一个在过程中变化*/ 
int main(){
	int i,j,l,r,n,q;
	while(~scanf("%d%d",&n,&q)){
		scanf("%s",&x);
		while(q--){
			int d=1,dp=n,s[10]={0};
			//d用来表示往那边走,dp=n,先放一个无关的变量
			//后面用来表记可能删掉的,s初始化 
			scanf("%d%d",&l,&r);
		    l--,r--;
		    
		    strcpy(y,x);
		    //复制过来。 
		 for(i=l;i>=l&&i<=r;i+=d){
			if('0'<=y[i]&&y[i]<='9'){
				s[y[i]-'0']++;
				//相应++,打印后都减减,
				//其中小于0后不会讨论,相当于删去 
				  y[i]--;
				  
				dp=n;
				//遇到数字了,就将dp抛出 
			    }
			if(y[i]=='<'||y[i]=='>'){
				//遇到贴别情况 
			    if(y[dp]=='<')
			    //之前上一次也是这样就删掉,
				 
			    	y[dp]=0;
			    else if(y[dp]=='>')
			        y[dp]=0;
			    dp=i;
				//标记 
				if(y[i]=='<')d=-1;
				else d=1;
				//方向 
		   } 
	   }
		   printf("%d",s[0]);
		   for(i=1;i<10;i++)
		       printf(" %d",s[i]);
		    printf("\n");
		}
		
	}
	return 0; 
}

[我没读懂题目后借鉴的代码](http://blog.csdn.net/weixin_44941429/article/details/102381372 "我没读懂题目后借鉴的代码")
posted @   海&贼  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示