呜呜呜呜

灌水区

求助!!!!
by Chasingmydream @ 2024-03-28 19:26:43


@[C++](/user/34413)
by Chasingmydream @ 2024-03-28 19:27:24


@[python](/user/38617)
by Chasingmydream @ 2024-03-28 19:27:45


@[java](/user/21978)
by Chasingmydream @ 2024-03-28 19:27:56


@[Chasingmydream](/user/1092628) 读入一遍,第一遍读到就记录一下位置,第二遍读到统计答案。
by xiaozengX @ 2024-03-28 19:28:02


```cpp #include<bits/stdc++.h> using namespace std; int n; int a[1005][1005]; int na,nb,nc; int main() { scanf("%d",&n); int ax=0,ay=0; int bx=0,by=0; int i=1,j=1; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { scanf("%d",&a[i][j]); } } for(int x=1;x<=n;x++) { for(int y=1;y<n;y++) { if(a[x][y]==a[i][j]) { ax=i; ay=j; bx=x; by=y; } if(ax==bx) { na++; } if(ay==by) { nb++; } if(ax-bx==ay-by) { nc++; } } } printf("%d %d %d",na,nb,nc); return 0; } ```
by Chasingmydream @ 2024-03-28 19:32:19


@[Chasingmydream](/user/1092628) 首先,```for(int y=1; y<n ;y++)``` 其次,你这个完全是错的 1. 你枚举 xy 的时候,ij 已经固定了,你要是想暴力就应该 ``` for(i 1-> n) for(j 1-> n) for(x 1-> n) for(y 1-> n) ``` 2. 如果按上面那样做,复杂度不对, n^4 复杂度 500 跑不过。 正确做法: ```cpp #include<iostream> #include<cstring> using namespace std; pair<int,int>pos[125050]; int ans[3]; int main(){ int n;cin>>n; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ int x;cin>>x; if(pos[x].first==0){ pos[x]=make_pair(i,j); }else{ if(pos[x].first==i){ ans[0]++; } if(pos[x].second==j){ ans[1]++; } if(pos[x].first-i==pos[x].second-j){ ans[2]++; } } } } for(int i=0;i<3;i++){ cout<<ans[i]<<" "; } } ```
by xiaozengX @ 2024-03-28 19:39:26


@[xiaozengX](/user/321529) 谢谢大佬%%%
by Chasingmydream @ 2024-03-28 19:40:45


@[xiaozengX](/user/321529) 但就是能用简单方法吗,我看不懂
by Chasingmydream @ 2024-03-28 19:41:36


@[xiaozengX](/user/321529) 突然感觉自己好弱
by Chasingmydream @ 2024-03-28 19:42:11


|