A. ABC String
题目:就是用‘(’和‘)’来代替A,B,C并与之对应,问是不是存在这样的对应关系使得'('和‘)'正好匹配
思路:第一个和最后一个字母是确定的左括号或者是右括号,这样就还剩下一个字母没有进行讨论,然后假设一下,分成两种情况进行计算,只要有一种情况满足就好
代码:
1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std;
7 int main(){
8 int t;
9 scanf("%d",&t);
10 while(t--){
11 char s[100];
12 getchar();
13 scanf("%s",&s);
14 int a=0,b=0,c=0;
15 int z=0,y=0;
16 int flag1=0,flag2=0;
17 for(int i=0;i
26 flag1=1;
27 }
28 }
29 if(z!=y){
30 flag1=1;
31 }
32 z=0;
33 y=0;
34 for(int i=0;i
43 flag2=1;
44 }
45 }
46 if(z!=y){
47 flag2=1;
48 }
49 z=0;
50 y=0;
51 if(flag1==1&&flag2==1){
52 printf("NO\n");
53 }else{
54 printf("YES\n");
55 }
56
57
58 }
59 }
B. Berland Crossword
题目:给定一个n×n的方格,起初都是空白的,给定第一行最后一行第一列最后一列会有多少个空格需要涂黑,问是不是有满足条件的涂色方法满足要求
思路:影响排布的只有四个角上的代码,那么就直接进行模拟从0-1四个角,只要有一个满足条件就可以,
代码:
1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std;
7 int n,u,r,l,d;
8 int check(int i,int j,int k,int z){
9 if(i+j+n-2<u||u<i+j) return 0;
10 if(j+k+n-2<r||r<j+k) return 0;
11 if(z+k+n-2<d||d<z+k) return 0;
12 if(i+z+n-2<l||l<i+z) return 0;
13 return 1;
14 }//问题出在了全局变量和局部变量的问题上
15 int main(){
16 int t;
17 scanf("%d",&t);
18 while(t--){
19 // int n,u,r,l,d;
20 int uu=0,rr=0,ll=0,dd=0;
21 int flag=0;
22 scanf("%d %d %d %d %d",&n,&u,&r,&d,&l);
23 for(int i=0;i<=1;i++){
24 for(int j=0;j<=1;j++){
25 for(int k=0;k<=1;k++){
26 for(int z=0;z<=1;z++){
27 if(check(i,j,k,z)==1) flag=1;
28 }
29 }
30 }
31 }
32 if(flag==1){
33 printf("YES\n");
34 }else{
35 printf("NO\n");
36 }
37 }
38 }
这套题告诉我最多的就是,有些变化少的东西,规律找不到就可以从头考虑是不是该进行模拟,然后一个一个的进行判断,毕竟很多东西不是总存在规律,而且有的题目范围也不是很大
手机扫一扫
移动阅读更方便
你可能感兴趣的文章