1. 灰度直方图
题目:
解题思路 + 总结:
代码:
#include <iostream>
using namespace std;
const int N = 510;
const int L = 256;
int n, m, l;
int a[N][N]; //数据数组
int h[L]; //计数数组
int main()
{
scanf("%d%d%d", &n, &m, &l);
for(int i = 0; i <n; i ++)
{
for(int j = 0; j < m; j ++)
{
scanf("%d", &a[i][j]);
h[a[i][j]] ++; // 在读入该数时,并让以该数值为下标的数组空间计数加一
}
}
for(int i = 0; i < l; i ++)
{
printf("%d ", h[i]);
}
return 0;
}
2. 邻域均值
题目:
解题思路 + 总结:
代码:
#include <iostream>
#include <algorithm> //包含max, min函数
using namespace std;
const int N = 610;
int n, L, r, t, res = 0;
int a[N][N], s[N][N];
void Find(int x1, int y1, int x2, int y2)
{
int cnt = (x2 - x1 + 1) * (y2 - y1 + 1);
double sum = s[x2][y2] - s[x2][y1 - 1] - s[x1 - 1][y2] + s[x1 - 1][y1 - 1];
if(sum / cnt <= t) res ++;
}
int main()
{
scanf("%d%d%d%d", &n, &L, &r, &t);
for(int i = 1; i <= n; i ++) //输入数据并求解s[N]
{
for(int j = 1; j <= n; j ++)
{
scanf("%d", &a[i][j]);
s[i][j] = s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1] + a[i][j];
}
}
for(int i = 1; i <= n; i ++)
{
for(int j = 1; j <= n; j ++)
{
int x1 = max(1, i - r); //防止越界
int y1 = max(1, j - r);
int x2 = min(n, i + r);
int y2 = min(n, j + r);
Find(x1, y1, x2, y2); //判断ij这个元素是否处于较暗区域
}
}
printf("%d", res);
return 0;
}
没考过ccf的小白刷前两题 备考 ,后续的题会慢慢补上,请见谅~