#include<iostream> using namespace std; int main(){ int n,ro,co,st,a,b,pr,pc,text,num; cin>>n; while(n>0){ --n; num=0; cin>>ro>>co>>st; int **f = new int*[ro]; //分配一位数组 for(a=0; a<ro; a++){ //分配二维数组 f[a] = new int[co]; } for(a=0; a<ro; a++){ //数组初始化 for(b=0; b<co; b++) f[a][b] = 0; } for(a=0; a<st; a++){ //数组石头位置标记 cin>>pr>>pc; f[pr-1][pc-1] = 1; } for(a=0; a<ro; a++){ //数组按行计算可行位置数量 text = 0; for(b=0; b<co; b++){ if(f[a][b] == 0){ ++text; } else{ if(text>1){ ++num; } text=0; } } if(text>1){ ++num; } } for(b=0; b<co; b++){ //数组按列计算可行位置数量 text=0; for(a=0; a<ro; a++){ if(f[a][b] == 0){ ++text; } else{ if(text>1){ ++num; } text=0; } } if(text>1){ ++num; } } cout<<num<<endl; for(a=0; a<ro; a++){ //删除一位数组 delete[] f[a]; } delete [] f; //删除二维数组 } return 0; } |
Double click to view unformatted code.