长嘘一口气。。。

简介:

#include "stdio.h"
#include "string.h"

const int Len=102;

typedef struct
{
	char name[Len];
	char value[Len];
	int flag;
}Keys;


Keys oldstr[Len],newstr[Len];


int deal(Keys *str)
{
	int count=0;
	char ch;
	int i=0;													//i 字母计数指针
	
	while(ch!='}')
	{
		scanf("%c",&ch);
		if(ch<='z' && ch>='a')
			str[count].name[i++]=ch;

		else if(ch==':')
			i=0;

		else if(ch<='9' && ch>='0')
			str[count].value[i++]=ch;

		else if(ch==',')
		{
			i=0;
			count++;
		}
	}
	
	return count+1;
}



void testprint(Keys *str,int n)
{
	int i;
	for(i=0;i<n;i++)
	{
		printf("%s.",str[i].name);
		printf("%s ",str[i].value);
	}

	printf("\n");
}


int main()
{
	int t;
	scanf("%d",&t);
	
	int i,j;
	int counto,countn;
	int sum;
	while(t--)
	{
		//init
		for(i=0;i<Len;i++)
		{
			for(j=0;j<Len;j++)
			{
				oldstr[i].name[j]='\0';
				oldstr[i].value[j]='\0';
				newstr[i].name[j]='\0';
				newstr[i].value[j]='\0';
				oldstr[i].flag=0;							//flag初始化为0,value不变置1,改变置2
				newstr[i].flag=0;
			}
		}
		
		counto=deal(oldstr);
		//testprint(oldstr,counto);

		countn=deal(newstr);
		//testprint(newstr,countn);

		for(i=0;i<counto;i++)
		{
			for(j=0;j<countn;j++)
			{
				if(strcmp(oldstr[i].name,newstr[j].name)==0)
				{
					if(strcmp(oldstr[i].value,newstr[j].value)==0)
					{
						oldstr[i].flag=1;
						newstr[j].flag=1;
					}

					else
					{
						oldstr[i].flag=2;
						newstr[j].flag=2;
					}
				}
			}
		}

		//搜索old串
		for(i=0;i<counto;i++)
			if(oldstr[i].flag!=1)
				break;

		for(j=0;j<countn;j++)
			if(newstr[j].flag!=1)
				break;

		if(i==counto && j==countn)
			printf("No changes\n");

		else
			//printf("have\n");
		{
			sum=0;
			for(i=0;i<countn;i++)
			{
				if(newstr[i].flag==0)
				{
					sum++;
					if(sum==1)
						printf("+");
					printf("%s ",newstr[i].name);
				}

				if(sum!=0 && i==countn-1)
					printf("\n");
			}

			sum=0;
			for(i=0;i<counto;i++)
			{
				if(oldstr[i].flag==0)
				{
					sum++;
					if(sum==1)
						printf("-");
					printf("%s ",oldstr[i].name);
				}

				if(sum!=0 && i==countn-1)
					printf("\n");
			}

			sum=0;
			for(i=0;i<counto;i++)
			{
				if(oldstr[i].flag==2)
				{
					sum++;
					if(sum==1)
						printf("*");
					printf("%s ",oldstr[i].name);
				}

				if(sum!=0 && i==countn-1)
					printf("\n");
			}
		}

		printf("\n");
	}
	
	return 0;
}

现场赛的C题终于写出来了。。。终于感觉好点了,虽然打码不一定精简,不过也算解了心结了,就因为这题没得奖啊。。。花了1个多小时。。。



相关文章
|
JSON API 数据格式
Uniapp~动态修改 请求头的content-type 的值
Uniapp~动态修改 请求头的content-type 的值
977 0
Uniapp~动态修改 请求头的content-type 的值
|
架构师 uml 测试技术
|
8天前
|
人工智能 自然语言处理 API
深入浅出LangChain与智能Agent:构建下一代AI助手
LangChain为大型语言模型提供了一种全新的搭建和集成方式,通过这个强大的框架,我们可以将复杂的技术任务简化,让创意和创新更加易于实现。本文从LangChain是什么到LangChain的实际案例到智能体的快速发展做了全面的讲解。
279547 52
深入浅出LangChain与智能Agent:构建下一代AI助手
|
9天前
|
设计模式 人工智能 JSON
一文掌握大模型提示词技巧:从战略到战术
本文将用通俗易懂的语言,带你从战略(宏观)和战术(微观)两个层次掌握大模型提示词的常见技巧,真正做到理论和实践相结合,占领 AI 运用的先机。
237786 4
|
9天前
|
NoSQL Cloud Native Redis
Redis核心开发者的新征程:阿里云与Valkey社区的技术融合与创新
阿里云瑶池数据库团队后续将持续参与Valkey社区,如过往在Redis社区一样耕耘,为开源社区作出持续贡献。
Redis核心开发者的新征程:阿里云与Valkey社区的技术融合与创新
|
9天前
|
关系型数据库 分布式数据库 数据库
PolarDB闪电助攻,《香肠派对》百亿好友关系实现毫秒级查询
PolarDB分布式版助力《香肠派对》实现百亿好友关系20万QPS的毫秒级查询。
PolarDB闪电助攻,《香肠派对》百亿好友关系实现毫秒级查询
|
3天前
|
机器人 Linux API
基于Ollama+AnythingLLM轻松打造本地大模型知识库
Ollama是开源工具,简化了在本地运行大型语言模型(ile优化模型运行,支持GPU使用和热加载。它轻量、易用,可在Mac和Linux上通过Docker快速部署。AnythingLLM是Mintplex Labs的文档聊天机器人,支持多用户、多种文档格式,提供对话和查询模式,内置向量数据库,可高效管理大模型和文档。它也是开源的,能与Ollama结合使用,提供安全、低成本的LLM体验。这两款工具旨在促进本地高效利用和管理LLMs。
86982 19
|
10天前
|
消息中间件 Cloud Native Serverless
RocketMQ 事件驱动:云时代的事件驱动有啥不同?
本文深入探讨了云时代 EDA 的新内涵及它在云时代再次流行的主要驱动力,包括技术驱动力和商业驱动力,随后重点介绍了 RocketMQ 5.0 推出的子产品 EventBridge,并通过几个云时代事件驱动的典型案例,进一步叙述了云时代事件驱动的常见场景和最佳实践。
246779 2
|
7天前
|
物联网 PyTorch 测试技术
手把手教你捏一个自己的Agent
Modelscope AgentFabric是一个基于ModelScope-Agent的交互式智能体应用,用于方便地创建针对各种现实应用量身定制智能体,目前已经在生产级别落地。
|
11天前
|
弹性计算 安全 API
访问控制(RAM)|云上安全使用AccessKey的最佳实践
集中管控AK/SK的生命周期,可以极大降低AK/SK管理和使用成本,同时通过加密和轮转的方式,保证AK/SK的安全使用,本次分享为您介绍产品原理,以及具体的使用步骤。
101886 3