1 solutions
-
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
Information
- ID
- 10294
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By