⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3140775_wa.java

📁 北大大牛代码 1240道题的原代码 超级权威
💻 JAVA
字号:
import java.util.*;
import java.io.*;

public class Main
{
	String exp;
	int [][] set = new int [201][201];
	int [][] list = new int [201][201];

	public static void main(String [] args)	throws IOException
	{
		new Main().run();
	}

	private void run()	throws IOException
	{
		Scanner cin = new Scanner (System.in);
		int n;
		

		n = cin.nextInt();
		for(int cas = 1; cas <= n; cas++)
		{
			System.out.print("Word #"+cas+": ");
			for(int i = 0; i < 201; i++)
			{
				Arrays.fill(set[i],-1);
				Arrays.fill(list[i],-1);
			}
			exp = cin.next();
			System.out.println((isSet(0, exp.length())?"":"No ")+"Set");
		}
	}

	private boolean isSet(int start,int end)
	{
		if(set[start][end]!=-1)
		{
			return set[start][end]==0?true:false;
		}
		int len = end - start;

		if(len < 2)
		{
			set[start][end] = 0;
			return false;
		}
		if(exp.charAt(start)!='{'||exp.charAt(end-1)!='}')
		{
			set[start][end] = 0;
			return false;
		}
		boolean b = isElementlist(1, len-1);
		set[start][end] = b?1:0;
		return b;
	}

	private boolean isElementlist(int start,int end)
	{
		return isEmpty(start, end)||isList(start, end);
	}

	private boolean isEmpty(int start,int end)
	{
		return start == end;
	}

	private boolean isList(int start,int end)
	{
		if(list[start][end]!=-1)
		{
			return list[start][end]==0?false:true;
		}
		if(isElement(start, end))
		{
			list[start][end] = 1;
			return true;
		}
		for(int i = start; i < end; i++)
		{
			if(exp.charAt(i)==',')
			{
				if(isElement(start, i)&&isList(i+1, end))
				{
					list[start][end] = 1;
					return true;
				}
			}
		}
		list[start][end] = 0;
		return false;
	}

	private boolean isElement(int start,int end)
	{
		return isAtom(start, end)||isSet(start, end);
	}

	private boolean isAtom(int start,int end)
	{
		return end-start==1&&(exp.charAt(start)=='{'||exp.charAt(start)=='}'||exp.charAt(start)==',');
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -