0分,,奇怪,下载了第一个wa的样例,输出是对的
查看原帖
0分,,奇怪,下载了第一个wa的样例,输出是对的
938260
SHERLOCK0226楼主2023/7/5 13:03
#include<stdio.h>
#include<math.h>
//#include<malloc.h>
#define MAXSIZE 1001
int num[MAXSIZE][MAXSIZE];
char c[MAXSIZE][MAXSIZE];

int res(int a, int b);
int main(){
	int lenth = 0, width = 0, ans = 0;
	scanf("%d %d", &width, &lenth);
	getchar();
//	int **num = (int**) malloc((width+2)*sizeof(int*));
//	char **c = (char**)malloc((width+2)*sizeof(char*));
//	for(int i = 0; i <= width + 1; i++){
//		num[i] = (int*) malloc((lenth+2)*sizeof(int));
//		c[i] = (char*) malloc((lenth+2)*sizeof(char));
//	}
	//初始化
	for(int i = 0; i <= width + 1; i++){
		num[i][0] = 0;
		num[i][lenth+1] = 0;
	} 
	for(int j = 0; j <= lenth + 1; j++){
		num[0][j] = 0;
		num[width+1][j] = 0;
	}
	//输入 
	for(int i = 1; i <= width; i++){
		for(int j = 1; j <= lenth; j++){
			scanf("%c", &c[i][j]);
		}
		getchar();
	}
	for(int i = 1; i <= width; i++){
		for(int j = 1; j <= lenth; j++){
			num[i][j] = c[i][j] - '0';
		}
	}
	
	//上下
	int res0 = 0;
	for(int i = 1; i <= width; i++){
		for(int j = 1; j <=lenth; j++){
			if(num[i][j]) res0++;
		}
	} 
	ans = 2 * res0;
	
	//遍历 
	for(int i = 1; i <= width; i++){
		for(int j = 1; j <= lenth; j++){
			ans += res(num[i][j], num[i][j-1]);
			ans += res(num[i][j], num[i][j+1]);
			ans += res(num[i][j], num[i-1][j]);
			ans += res(num[i][j], num[i+1][j]); 
		}
	} 
	
	printf("%d\n", ans);
//	for(int i = 0; i <= width + 1; i++){
//		free(num[i]);
//		free(c[i]);
//	}
//	free(num);
//	free(c);
	return 0;
} 

int res(int a, int b){
	if(a - b > 0) return a-b;
	else  return 0;
}
2023/7/5 13:03
加载中...