999666123 2021-12-26 16:36 采纳率: 100%
浏览 35
已结题

一道c语言题,没思路

7-4 奇怪的屏幕 (100 分)
我们的屏幕大都是由一个一个像素点构成的。随着各个像素点亮度,色彩等不同,屏幕上就可以显示各种不同的图案。现在有一个屏幕有些奇怪,当某一个像素点亮了以后,它周边的8个点(当这个点在屏幕的边上或角上时,这个数量是不一样的)都会亮。当然后亮的这8个点是因为这个中心点才亮的,它们不再会导致它们各自周围的点再亮了(否则一个点亮了,整个屏幕就都亮了)。我们把前一种像素点叫主动亮的点。如图所示,如果那个红色的点为主动亮的点,则红框内其他8个点则会因为这个主动亮的点也亮起来,但红框外边的点不会。

img

如果规定屏幕的左上角的坐标为(1,1),它的右边的点坐标依次为(1,2),(1,3)等等,它的下边的点坐标依次为(2,1),(3,1)等等。其他点坐标也依此类推。

现在请你写一段程序来计算一下在某种情况下这个屏幕共亮了多少个像素点。

输入格式:
第一行为三个用空格分隔的整数m,n,c(0<m,n,c<10),依次代表屏幕像素行数,列数以及主动亮的像素点的个数。后边共c行,每行均为两个用空格分隔的整数,依次代表c个主动点亮的点的行坐标和列坐标。

测试用例保证输入合法且没有重复的主动亮的点。

输出格式:
所有亮了的像素点个数(包括主动亮的点)。

输入样例:
4 6 2
2 2
4 2
输出样例:
12

感谢大佬指教!谢谢了。

  • 写回答

1条回答 默认 最新

  • _GX_ 2021-12-26 16:57
    关注
    #include <stdio.h>
    
    int main()
    {
        int m, n, c, i, j, k, p, q, count = 0;
        int a[10][10] = {};
        scanf("%d%d%d", &m, &n, &c);
        for (k = 0; k < c; k++)
        {
            scanf("%d%d", &i, &j);
            for (int u = -1; u <= 1; u++)
            {
                for (int v = -1; v <= 1; v++)
                {
                    p = i + u;
                    q = j + v;
                    if (p >= 1 && p <= m && q >= 1 && q <= n)
                        a[p][q] = 1;
                }
            }
        }
        for (i = 1; i <= m; i++)
            for (j = 1; j <= n; j++)
                if (a[i][j] == 1)
                    count++;
        printf("%d", count);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月3日
  • 已采纳回答 12月26日
  • 创建了问题 12月26日

悬赏问题

  • ¥15 mmocr的训练错误,结果全为0
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀