机考0分算法
2021/12/26 12:37:05
本文主要是介绍机考0分算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
睿智题一个,考试时分24种类,分了1小时0分
#include <stdio.h> #include <math.h> int main() { int m,n,t; scanf("%d %d %d",&m,&n,&t); int c=0; int k=(m+1)*(n+1); int ch[k]; for(int i=0;i<=n;i++){ ch[i]=1; } // int f=0; // for(int i=0;i<=m*n;i+=n){ // ch[f*(n+1)]=1; // f++; // } for(int i=0;i<=m;i++){ ch[i*(n+1)]=1; } for(int i=0;i<t;i++){ int x,y; scanf("%d %d",&x,&y); if(x==1&&y==1){ c++; if(ch[2]==0){ c++; ch[2]=1; } if(ch[1+n]==0){ c++; ch[1+n]=1; } if(ch[2+n]==0){ c++; ch[2+n]=1; } } else if(x==1&&y==m){ c++; if(ch[n*(m-1)+1]==0){ ch[n*(m-1)+1]=1; c++; } if(ch[n*(m-1)+1-m]==0){ ch[n*(m-1)+1-m]=1; c++; } if(ch[n*(m-1)-m]==0){ ch[n*(m-1)-m]=1; c++; } } else if(x==n&&y==1){ c++; if(ch[m*(n-1)+1]==0){ ch[m*(n-1)+1]=1; c++; } if(ch[m*(n-1)+1-n]==0){ ch[m*(n-1)+1-n]=1; c++; } if(ch[m*(n-1)-n]==0){ ch[m*(n-1)-n]=1; c++; } } else if(x==n&&y==m){ c++; if(ch[m*n-1]==0){ ch[m*n-1]=1; c++; } if(ch[m*n-1-m]==0){ ch[m*n-1-m]=1; c++; } if(ch[m*n-m]==0){ ch[m*n-m]=1; c++; } } else if(x==1&&y>=2&&y<=m-1){ c++; if(ch[m*y+2]==0){ ch[m*y+2]=1; c++; } if(ch[m*y+1+m]==0){ ch[m*y+1+m]=1; c++; } if(ch[m*y+1-m]==0){ ch[m*y+1-m]=1; c++; } } else if(y==1&&x>=2&&x<=n-1){ c++; if(ch[x+1]==0){ ch[x+1]=1; c++; } if(ch[x-1]==0){ ch[x-1]=1; c++; } if(ch[x+m]==0){ ch[x+m]=1; c++; } } else if(x==n&&y>=2&&y<=m-1){ c++; if(ch[m*y+m-1]==0){ ch[m*y+m-1]=1; c++; } if(ch[m*y+2*m]==0){ ch[m*y+2*m]=1; c++; } if(ch[m*y]==0){ ch[m*y]=1; c++; } } else if(y==m&&2<=x&&x<=n-1){ c++; if(ch[y*(m-1)+x+1]==0){ ch[y*(m-1)+x+1]=1; c++; } if(ch[y*(m-1)+x-1]==0){ ch[y*(m-1)+x-1]=1; c++; } if(ch[y*(m-1)+x-m]==0){ ch[y*(m-1)+x-m]=1; c++; } } else{ c+=1; if(ch[m+m*y+1]==0){ ch[m+m*y+1]=1; c++; } if(ch[m+m*y-1]==0){ ch[m+m*y-1]=1; c++; } if(ch[m+m*y+m]==0){ ch[m+m*y+m]=1; c++; } if(ch[m+m*y-m]==0){ ch[m+m*y-m]=1; c++; } if(ch[m+m*y+1+m]==0){ ch[m+m*y+1+m]=1; c++; } if(ch[m+m*y+1-m]==0){ ch[m+m*y-1]=1; c++; } if(ch[m+m*y-1+m]==0){ ch[m+m*y-1+m]=1; c++; } if(ch[m+m*y-1-m]==0){ ch[m+m*y-1-m]=1; c++; } } } printf("%d",c); }
然而只要在判断灯亮不亮的时候判断数组越不越界就行了。100分代码
#include <stdio.h> #include <math.h> int main() { int m,n,t; scanf("%d %d %d",&m,&n,&t); int a[m][n]; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ a[i][j]=0; } } int cnt=0; for(int i=0;i<t;i++){ int x,y; scanf("%d %d",&x,&y); int xx=x-1; int yy=y-1; if(a[xx][yy]==0){ a[xx][yy]=1; cnt++; } if(a[xx+1][yy]==0&&0<=xx+1&&xx+1<=m-1&&0<=yy&&yy<=n-1){ cnt++; a[xx+1][yy]=1; } if(a[xx-1][yy]==0&&0<=xx-1&&xx-1<=m-1&&0<=yy&&yy<=n-1){ cnt++; a[xx-1][yy]=1; } if(a[xx][yy+1]==0&&0<=xx&&xx<=m-1&&0<=yy+1&&yy+1<=n-1){ cnt++; a[xx][yy+1]=1; } if(a[xx][yy-1]==0&&0<=xx&&xx<=m-1&&0<=yy-1&&yy-1<=n-1){ cnt++; a[xx][yy-1]=1; } if(a[xx+1][yy+1]==0&&0<=xx+1&&xx+1<=m-1&&0<=yy+1&&yy+1<=n-1){ cnt++; a[xx+1][yy+1]=1; } if(a[xx+1][yy-1]==0&&0<=xx+1&&xx+1<=m-1&&0<=yy-1&&yy-1<=n-1){ cnt++; a[xx+1][yy-1]=1; } if(a[xx-1][yy+1]==0&&0<=xx-1&&xx-1<=m-1&&0<=yy+1&&yy+1<=n-1){ cnt++; a[xx-1][yy+1]=1; } if(a[xx-1][yy-1]==0&&0<=xx-1&&xx-1<=m-1&&0<=yy-1&&yy-1<=n-1){ cnt++; a[xx-1][yy-1]=1; } } printf("%d",cnt); }
呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜
这篇关于机考0分算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南