当前位置:   article > 正文

[codeforces 1360E] Polygon 自底向上,自右向左分析_codeforces1360

codeforces1360

Codeforces Round #644 (Div. 3)  参赛人数20688

[codeforces 1360E]    Polygon   自底向上,自右向左分析

总目录详见https://blog.csdn.net/mrcrack/article/details/103564004

在线测评地址http://codeforces.com/contest/1360/problem/D

ProblemLangVerdictTimeMemory
E - Polygon GNU C++17Accepted30 ms0 KB

样例模拟如下

  1. 4
  2. 001(正下方有1)0
  3. 001(右边有1)1
  4. 0000
  5. 0000
  6. 输出YES
  7. 2
  8. 1(右边无1,正下方无1)0
  9. 01
  10. 输出NO
  11. 2
  12. 00
  13. 00
  14. 输出YES
  15. 4
  16. 0101
  17. 1111
  18. 0101
  19. 0111
  20. 输出YES
  21. 4
  22. 0100
  23. 111(右边无1,正下方无1)0
  24. 0101
  25. 0111
  26. 输出NO

一开始想多了,其实,该题还是比较简单的,具体思路,可结合上述样例,以及代码进行研究,注意n==1时要特判,输出YES

AC代码如下

  1. #include <stdio.h>
  2. char a[55][55];
  3. int main(){
  4. int t,n,i,j;
  5. scanf("%d",&t);
  6. while(t--){
  7. scanf("%d",&n);
  8. for(i=1;i<=n;i++)
  9. scanf("%s",a[i]+1);
  10. if(n==1){printf("YES\n");continue;}//特判
  11. int flag=0;
  12. for(i=n-1;i>=1;i--){
  13. for(j=n-1;j>=1;j--)
  14. if(a[i][j]=='1'){
  15. if(a[i+1][j]=='1')flag=1;//a[i][j]的正下方
  16. else if(a[i][j+1]=='1')flag=1;//a[i][j]的右边
  17. else {flag=0;break;}
  18. }
  19. if(a[i][j]=='1'&&!flag)break;
  20. }
  21. if(a[i][j]=='1'&&!flag)printf("NO\n");//a[i][j]的正下方,右边,无1,无所依托,输出NO
  22. else printf("YES\n");
  23. }
  24. return 0;
  25. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/72585
推荐阅读
相关标签
  

闽ICP备14008679号