📄 3140775_wa.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 + -