鏈接
1271
題面
題目描述
Alice在玩一個(gè)游戲,她在一個(gè)m×n的格子里,隨機(jī)涂黑k個(gè)格子。然后她每次可以把一行或者一列的格子染成紅色,但是這一行中不能有黑色的格子。 請(qǐng)問她最多能把多少個(gè)格子涂成紅色?
輸入
第一行是一個(gè)整數(shù)T(T≤100),表示樣例的個(gè)數(shù)。 每個(gè)樣例的第一行是m(1≤m≤100),n(1≤n≤100),k(0≤k≤m×n)。 以后的k行,每行兩個(gè)整數(shù)x(1≤x≤m),y(1≤y≤n),表示(x,y)為黑色格子。
輸出
每行輸出一個(gè)樣例的結(jié)果。
樣例輸入
1 3 4 2 1 1 3 3
樣例輸出
8
代碼
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int m,n,k;
scanf("%d%d%d",&m,&n,&k);
int arr1[110],arr2[110];
memset(arr1,0,sizeof(arr1));
memset(arr2,0,sizeof(arr2));
int a,b;
for(int i=1;i<=k;i++)
{
scanf("%d%d",&a,&b);
arr1[a]=1,arr2[b]=1;
}
int cnt1=0,cnt2=0;
for(int i=1;i<=m;i++) if(!arr1[i]) cnt1++;
for(int i=1;i<=n;i++) if(!arr2[i]) cnt2++;
printf("%d\n",cnt1*n+cnt2*m-cnt1*cnt2);
}
return 0;
}
總結(jié)
1.把沒有黑色格子的行和列的數(shù)目統(tǒng)計(jì)出來,求一個(gè)和,然后減去重合的部分即可
2.for循環(huán)可以從0開始計(jì)數(shù),也可以從1開始計(jì)數(shù),有時(shí)候從1開始計(jì)數(shù)方便一些,所以這道題目從1開始計(jì)數(shù)的,因?yàn)槲覀儽硎靖褡拥淖鴺?biāo),由題意可以知道是從(1,1)開始的
3.使用兩個(gè)一維數(shù)組來存放橫坐標(biāo)和縱坐標(biāo),把輸入的數(shù)字作為數(shù)組下標(biāo)(注意為了防止發(fā)生邊界錯(cuò)誤,把數(shù)組稍微開大一些),相應(yīng)的數(shù)值標(biāo)記為1
4.在標(biāo)記之前把數(shù)組初始化為0了。遍歷行和列,把沒有被標(biāo)記的數(shù)目求出來
5.按照1的公式輸出答案
參考
?文章來源:http://www.zghlxwxcb.cn/news/detail-670062.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-670062.html
到了這里,關(guān)于湘潭大學(xué) 湘大 XTU OJ 1271 Color 題解(非常詳細(xì))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!