1 条题解
-
0
C++ :
#include <bits/stdc++.h> using namespace std; int a[1100][1100],n,c; int num[1100][1100]; //车的方向数组 int d[8][2] = {{-1,0},{1,0},{0,-1},{0,1},{-1,-1},{-1,1},{1,1},{1,-1}}; //设置控制点 void fun(int x,int y,int ox,int oy){ for(int i = 0;i < 8;i++){ while(x+d[i][0]>=1&&x+d[i][0]<=n&&y+d[i][1]>=1&&y+d[i][1]<=n&&a[x+d[i][0]][y+d[i][1]]==0){ num[x+d[i][0]][y+d[i][1]]++; if(num[x+d[i][0]][y+d[i][1]] == 1) c++; x=x+d[i][0]; y=y+d[i][1]; } x=ox; y=oy; if(a[ox][oy] == 1 && i == 3) break; } } int main(){ /* 思路:遍历每个点,如果该点是车或后则将所有可达点都走一遍并计数 */ int i,j; cin>>n; for(i = 1;i <= n;i++){ for(j = 1;j <= n;j++){ cin>>a[i][j]; } } for(i = 1;i <= n;i++){ for(j = 1;j <= n;j++){ //车 if(a[i][j] == 1 || a[i][j] == 2){ c++; num[i][j]++; fun(i,j,i,j); } } } // for(i = 1;i <= n;i++){ // for(j = 1;j <= n;j++){ // cout<<setw(5)<<num[i][j]; // } // cout<<endl; // } cout<<n * n - c<<endl; }
- 1
信息
- ID
- 2448
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者