FOJ--1214--Density Map
2009-07-22 10:20
381 查看
题目大意:输入两个整数n,r。n是行数和列数,r是允许的距离。距离公式是max(|i-i'|,|j-j'|)。最后求每个点在允许的距离范围内的所有点的值的和。
思路一:
分析:先输入全部数。然后在一个点一个点的找。就是找出这个点的允许范围,在以这个范围为一个二维数组,求这个数组的全部数的和。
结果:我发现提交会超时,循环语句太多了,应该换个思路。
代码如下:(哪位朋友能帮我改进下)
思路二:
想法与思路一差不多,不过是输入一个数就处理。当输入的数为0不处理。为1就做如下操作:
找出该位位置允许的范围,然后每个位置都加上这个数。发现还是超时。 - -||
代码如下:
思路一:
分析:先输入全部数。然后在一个点一个点的找。就是找出这个点的允许范围,在以这个范围为一个二维数组,求这个数组的全部数的和。
结果:我发现提交会超时,循环语句太多了,应该换个思路。
代码如下:(哪位朋友能帮我改进下)
#include <stdio.h> #include <string.h> int main() { int n,m,i,j,k,l,min_x,min_y,max_x,max_y; int a[250][250],b[250][250]; while (scanf("%d%d",&n,&m)!=EOF) { for(i=0;i<250;i++) memset(b[i],0,sizeof(b[i])); for (i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); for (i=0;i<n;i++) { for(j=0;j<n;j++) { if(i-m>=0) min_x=i-m; else min_x=0; if(i+m<=n-1) max_x=i+m; else max_x=n-1; if(j-m>=0) min_y=j-m; else min_y=0; if(j+m<=n-1) max_y=j+m; else max_y=n-1; for(k=min_x;k<=max_x;k++) for(l=min_y;l<=max_y;l++) b[i][j]+=a[k][l]; } } for (i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%d",b[i][j]); if(j!=n-1) printf(" "); } printf("/n"); } } return 0; }
思路二:
想法与思路一差不多,不过是输入一个数就处理。当输入的数为0不处理。为1就做如下操作:
找出该位位置允许的范围,然后每个位置都加上这个数。发现还是超时。 - -||
代码如下:
#include <stdio.h> #include <string.h> int main() { int n,m,i,j,k,l,min_x,min_y,max_x,max_y; int a[250][250],b[250][250]; while (scanf("%d%d",&n,&m)!=EOF) { for(i=0;i<250;i++) memset(b[i],0,sizeof(b[i])); for (i=0;i<n;i++) { for(j=0;j<n;j++) { scanf("%d",&a[i][j]); if (a[i][j]!=0) { if(i-m>=0) min_x=i-m; else min_x=0; if(i+m<=n-1) max_x=i+m; else max_x=n-1; if(j-m>=0) min_y=j-m; else min_y=0; if(j+m<=n-1) max_y=j+m; else max_y=n-1; for(k=min_x;k<=max_x;k++) for(l=min_y;l<=max_y;l++) b[k][l]+=a[i][j]; } } } for (i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%d",b[i][j]); if(j!=n-1) printf(" "); } printf("/n"); } } return 0; }
相关文章推荐
- FOJ 1544 PKU 3615 Cow Hurdles
- FOJ 1404 Andy的作业
- FOJ 1011使用非KMP算法AC!!
- FOJ 1706 括号表达式
- FOJ 1481 环串
- FOJ--1021--飞船赛
- FOJ 1205 小鼠迷宫问题
- FOJ 1773 Discount
- FOJ 1664 Top K different numbers
- FOJ 1339 Calculator
- FOJ--1698--最大乘积--解题报告(大数乘小数的问题)
- Foj 1408 位图
- Foj 1649 Prime number or not
- foj 1432 Coin Changing
- foj 1182 Argus
- POJ1214--"Accordian" Patience
- sicily 1214 信号分析
- FOJ 1467 Pick Up Points
- FOJ 2013 A short problem 解题报告
- FOJ 1021