Image Compression
程序员文章站
2022-03-12 16:57:26
...
题目大意:有w*w的棋盘,每个方格为1(黑色)或0(白色),若棋盘的黑色格子数目c1(或白色格子c0)占总格子数的比例>=t;将所有格子都变为黑色(白色),否则,将棋盘均分为四个部分,继续进行上述判断;
思路:简单的dfs;
#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
int w;
double t;
char a[100][100];
void dfs(int x0,int y0,int len)
{
int xx[4]={0,0,len/2,len/2};
int yy[4]={0,len/2,0,len/2};
int c0=0,c1=0;
for(int i=x0;i<x0+len;i++)
{
for(int j=y0;j<y0+len;j++)
{
if(a[i][j]=='0')c0++;
else c1++;
}
}
if(1.0*c0*100/(c0+c1)>=t)
{
for(int i=x0;i<x0+len;i++)//计算概率时不要忘乘100
{
for(int j=y0;j<y0+len;j++)a[i][j]='0';
}
}
else if(1.0*c1*100/(c0+c1)>=t)
{
for(int i=x0;i<x0+len;i++)
{
for(int j=y0;j<y0+len;j++)a[i][j]='1';
}
}
else
{
for(int p=0;p<4;p++)
dfs(x0+xx[p],y0+yy[p],len/2);
}
return ;
}
int main()
{
int cn=0;
while(cin>>w)
{
if(w==0)break;
cin>>t;
for(int i=0;i<w;i++)
{
cin>>a[i];//输入用字符串
}
dfs(0,0,w);
cout<<"Image "<<++cn<<":"<<endl;
for(int i=0;i<w;i++)
{
for(int j=0;j<w;j++)
{
cout<<a[i][j];
}
cout<<endl;
}
}
return 0;
}
上一篇: python中的import学习
下一篇: k8s开启ipvs
推荐阅读
-
瑞芯微ROCK960 RK3399烧录image后扩容rootfs
-
image-set实现Retina屏幕下图片显示详细介绍
-
iOS-关于缓存【SDImageCache】Image,一直刷新UIImageView内存一直增加问题
-
C#无损转换Image为Icon的方法
-
微信小程序image图片加载完成监听
-
How to run and use SWF To Image on x64 Windows
-
php简单开启gzip压缩方法(zlib.output_compression)
-
vue-image-crop基于Vue的移动端图片裁剪组件示例
-
firefox background-image垂直平铺问题的解决方法
-
微信小程序 image组件binderror使用例子与js中的onerror区别