三台山景区集浙江山地和江南水乡风貌于一身,它以浴鹄湾景区为核心,东靠杨公堤,西临三台山路,北至乌龟潭景区,南到虎跑路。重新修复后的三台山景区内恢复了先贤堂、黄公望故居、黄篾楼水轩、武状元坊、霁虹桥、三台梦迹等故迹。三台山景区的茶楼,是杭州茶楼的一大特色。飞檐仿古的建筑,亭阁宛然,花木葱茏,与周围的环境十分协调。
此时,你看着湖面想着这么一个问题:
用$n*m$的二维数组来表示湖面,当湖面平静时值为$0$。湖中有三个振源在时间$t=0$时开始,以固定频率振动(类似正弦曲线,即t=0时振源就为峰值),振幅为$r$。然后波开始传播,每个单位时间传播一个单位距离。
为了简化这个问题,假设波峰和波谷间隔为一个单位距离,平面上任意两点的距离定义为($\vert x_1-x_2 \vert + \vert y_1-y_2 \vert$)。
现在请你计算t时刻湖面的状态。注意:三个振源发出的波会叠加。主要代码已经给出。
#include <stdio.h>
int func(int x,int y,int i,int j,int r,int t);
int main()
{
int map[25][25];
int n,m,t;
int i,j,p;
for(i=0;i<25;++i)
{
for(j=0;j<25;++j)
{
map[i][j]=0;
}
}
scanf("%d%d%d",&n,&m,&t);
int x,y,r;
for(p=0;p<3;++p)
{
scanf("%d %d %d",&x,&y,&r);
for(i=0;i<n;++i)
{
for(j=0;j<m;++j)
{
map[i][j]+=func(x-1,y-1,i,j,r,t);
}
}
}
for(i=0;i<n;++i)
{
for(j=0;j<m;++j)
{
printf("%d",map[i][j]);
printf("%c",j==m-1?'\n':' ');
}
}
}
输入第一行三个整数$n,m$,表示湖面的长和宽,以及时间$t$($0<n,m<20$)($0 \leq t \leq10$);
接下来三行每行有三个数字,分别为振源坐标$x,y$,以及振幅$r$($0<r<100$)($0 \lt x \leq n,0 \lt y \leq m$)。
输出$n$行$m$列的数组,表示湖面的初始状态;
数字间用空格隔开行末无多余空格。
那单振源做例子:n=5,m=6,t=3;x=1,y=2,r=3;
3 -3 3 -3 3 0
-3 3 -3 3 0 0
3 -3 3 0 0 0
0 3 0 0 0 0
0 0 0 0 0 0
$这是一道函数题,如果用C语言提交,只需要提交问题中的func()函数$