codeforces 711B - Chris and Magic Square(矩阵0位置填数)
生活随笔
收集整理的這篇文章主要介紹了
codeforces 711B - Chris and Magic Square(矩阵0位置填数)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接:http://codeforces.com/problemset/problem/711/B
題目大意:
輸入 n ,輸入 n*n 的矩陣,有一個占位 0 , 求得將 0 位置換成其他的整數 使得矩陣 行列斜 和全部相等。
代碼狀態:
?
一把辛酸淚
?2016.09.24 8:14 再次更新 ?DOWN 【昨天晚上的‘杯具’要謹記,做題要看懂題,看清題的要求再做,切記、切記、切記】
補解題思路:
1.
1.1 先特殊判斷 n 是否==1,如果等于 1 則直接輸出 1 即可
1.2 如果 n > 1 判斷 0 的位置在哪個位置,找一個要填入到0位置的數。
如果 0 在第一行,那么用第二行的和 減去 第一行的和,便是要填入的值.
如果 0 在最后一行,那么用倒數第二行的和 減去 最后一行的和,便是要填入的值.
其他的 則 0 在中間位置 ,那么可以用 前一行或者后一行的和 減去 0 所在的和,便是要填入的值.
(用列減也可以)
【看清題意,如果填入的值 <1 則輸出 -1】
2.?
將要填入的值填到 0 的位置 進行全部的掃描判斷即可。全盤的掃描不在解釋。
AC Code:
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=500+5; 4 typedef long long ll; 5 ll na[N][N]; 6 int check(int n) 7 { 8 ll ans=0,ans1=0; 9 int i,j; 10 for(i=1; i<=n; i++) 11 ans+=na[1][i],ans1+=na[i][1]; 12 if(ans!=ans1) 13 return 0; 14 ans1=0; 15 ll ans2=0; 16 for(i=1; i<=n; i++) 17 { 18 for(j=1; j<=n; j++) 19 ans1+=na[i][j], ans2+=na[j][i]; 20 if(ans!=ans2||ans1!=ans2||ans!=ans1) 21 return 0; 22 ans1=ans2=0; 23 24 } 25 ans1=ans2=0; 26 for(i=1; i<=n; i++) 27 { 28 for(j=1; j<=n; j++) 29 if(i==j) 30 ans1+=na[i][j],ans2+=na[i][n-i+1]; 31 } 32 if(ans!=ans2||ans1!=ans2||ans!=ans1) 33 return 0; 34 return 1; 35 } 36 int main() 37 { 38 int n; 39 while(~scanf("%d",&n)) 40 { 41 int i,j; 42 if(n==1) 43 { 44 scanf("%d",&n); 45 printf("1\n"); 46 continue; 47 } 48 int x,y; 49 for(i=1; i<=n; i++) 50 for(j=1; j<=n; j++) 51 { 52 scanf("%d",&na[i][j]); 53 if(na[i][j]==0)x=i,y=j; 54 } 55 ll ans=0,ans1=0; 56 if(x==1) 57 { 58 for(i=1; i<=n; i++) 59 ans+=na[1][i],ans1+=na[2][i]; 60 na[x][y]=ans1-ans; 61 } 62 else if(x==n) 63 { 64 for(i=1; i<=n; i++) 65 ans+=na[n][i],ans1+=na[n-1][i]; 66 na[x][y]=ans1-ans; 67 } 68 else 69 { 70 for(i=1; i<=n; i++) 71 ans+=na[x][i],ans1+=na[x-1][i]; 72 na[x][y]=abs(ans1-ans); 73 } 74 75 if(check(n)) 76 printf("%I64d\n",na[x][y]<1?-1:na[x][y]); 77 else printf("-1\n"); 78 } 79 return 0; 80 }?
轉載于:https://www.cnblogs.com/A--Q/p/5901984.html
總結
以上是生活随笔為你收集整理的codeforces 711B - Chris and Magic Square(矩阵0位置填数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring + shiro + cas
- 下一篇: 台湾ML笔记--1.2 formaliz