1 条题解

  • 0
    @ 2025-4-12 21:54:23

    C++ :

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    char s[105];
    bool k;//判断是不是""
    int tuples_run(int a);
    int list_run(int a);
    int run(int a);
    int char_run(int a);
    
    int tuples_run(int a)
    {
    	int t;
    	printf("tuples(");
    	t=run(a);
    	printf(")");
    	return t;
    }
    
    int list_run(int a)
    {
    	int t;
    	printf("list(");
    	t=run(a);
    	printf(")");
    	return t;
    }
    
    int char_run(int a)
    {
    	int t;
    	printf("list(");
    	t=run(a);
    	printf(")");
    	return t;
    }
    
    int run(int a)
    {
    	int len = strlen(s);
    	int sum;
    	int i;
    	sum=0;
    	for(i=a;i<len;)
    	{
    		if(s[i]=='[')
    			i=list_run(i+1);
    		else if(s[i]=='{')
    			i=tuples_run(i+1);
    		else if(s[i] ==']' || s[i] == '}')
    		{
    			return i+1;
    		}
    		else if(s[i]=='"'&& k==false)
    		{
    			k=true;
    			i = char_run(i+1);
    		}
    		else if(s[i]==',')
    		{
    			i++;
    			printf(",");
    		}
    		else if(k==false)
    		{
    			if(s[i]>='0' &&s[i] <= '9')
    			{
    				while(s[i]!=',' && s[i] != '.' && s[i] != ']' && s[i]!='}' &&i < len) i++;
    				if(s[i]=='.')
    				{
    					while(s[i]!=','  && s[i] != ']' && s[i]!='}'  &&i < len)i++;
    					printf("float");
    					if(s[i]==',')
    					{
    						i++;
    						printf(",");
    					}
    				}
    				else
    				{
    					printf("integer");
    					if(s[i]==',')
    					{
    						i++;
    						printf(",");
    					}
    				}
    			}
    			else
    			{
    				printf("atoms");
    				while(s[i]!=','&& s[i]!=']' && s[i]!='}' && i<len) i++;
    				if(s[i]==',')
    				{
    					i++;
    					printf(",");
    				}
    			}
    		}
    		else
    		{
    			if(s[i]!='"')
    			{
    				i++;
    				printf("integer");
    			}
    			while(s[i]!='"')
    			{
    				i++;
    				printf(",integer");
    			}
    			k=false;
    			return i+1;
    		}
    	}
    }
    
    int main()
    {
    	while(gets(s))
    	{
    		run(0);
    		printf("\n");
    	}
    	return 0;
    }
    
    
    • 1

    信息

    ID
    2386
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者