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 "我没读懂题目后借鉴的代码")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现