有一个M x N(M, N
我试图解决它,但找不到可能的解决办法。现在,我想知道解决这个问题的有效算法。
exam1)
给定一个5x3矩阵作为问题输入,
'o'-
o o o
x o x
o o o
x o x
o o
回答)油漆的最小数量为5<绘制(0,0…0,2)
绘制(2,0…2,2)
绘制(4,0…4,2)
绘制(1,1)
绘制(3,1)
给定一个3x3矩阵,
o x o
o o
o x o
回答)油漆的最小数量为3<绘制(0,0…2,0)
绘制(1,1)
绘制(0,2…2,2)
exam3)
给定一个3x3矩阵,
o o o
o o o
o x o
答案)油漆的最小计数是3。
油漆(0,0 ... 2,0)
油漆(0,1 ... 1,1)
油漆(0,2 ... 2,2)
exam4)
给定一个3x3矩阵,
o x o
x o
o x o
回答)油漆的最小数量为4<绘制(0,2…2,2)
绘制(0,0)
绘制(1,1)
绘制(2,0)
这样做的一种方法是遍历可能性,计算每次预形成一个动作的次数,并计算计数
s的最小值
f(grid,count)
for each square in grid
if square is a circle // i.e. 'o'
return min(g(grid with vertical stroke,count+1),
g(grid with horizontal stroke,count+1))
return count
我代表
o o o
x o x
o o o
x o x
o o o
由
boolean arr [][] = {
{false,false,false},
{true,false,true},
{false,false,false},
{true,false,true},
{false,false,false}
};
在java中,我有:
// return copy of arr
static boolean[][] copy(boolean arr[][]){
boolean[][] c = new boolean[arr.length][arr[0].length];
for(int i = 0; i < arr.length; i++)
c[i] = arr[i].clone();
return c;
}
// select consecutive squares horizontal stroke at (i,j)
static boolean[][] leftRight(boolean arr[][],int i, int j){
boolean[][] c = copy(arr);
// right
int k = j;
while (true){
if(k==arr[0].length || c[i][k]){
break;
}
c[i][k] = true;
k++;
}
// left
k = j;
while (true){
if(k==-1 || c[i][k]){
break;
}
c[i][k] = true;
k--;
}
c[i][j] = true;
return c;
}
// select consecutive squares vertical stroke at (i,j)
static boolean[][] upDown(boolean arr[][],int i, int j){
boolean[][] c = copy(arr);
// down
int k = i;
while (true){
if(k==arr.length || c[k][j]){
break;
}
c[k][j] = true;
k++;
}
// up
k = i;
while (true){
if(k==-1 || c[k][j]){
break;
}
c[k][j] = true;
k--;
}
c[i][j] = true;
return c;
}
static int g(boolean arr[][], int count){
// for each square in grid
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[0].length; j++) {
// if false then select square
// and try horizontal and vertical stroke
// take the min of the 2
if (!arr[i][j]) {
return Math.min(g(leftRight(arr,i,j),count+1),g(upDown(arr,i,j),count+1));
}
}
}
return count;
}
public static void main(String args[]){
/*
o o o
x o x
o o o
x o x
o o o
*/
boolean arr [][] = {
{false,false,false},
{true,false,true},
{false,false,false},
{true,false,true},
{false,false,false}
};
System.out.println(g(arr,0));
}
输出:
5
我已经尝试了很多算法来渲染Mandelbrot集,包括简单的逃逸时间算法,以及优化的逃逸时间算法。但是,有没有更快的算法可以像我们在YouTube上看到的那样有效地产生真正深的缩放。此外,我很想得到一些想法,如何提高我的精度超过C/C
我需要使用这个设置计算CRC-64到这个精彩的网站:http://www.sunshine2k.de/coding/javascript/crc/crc_js.html 正如您所看到的,我需要“Input Reflected”,这意味着我需要颠倒任何字节的位顺序(有点烦人)。目前,我使用一个查找表(例如0x55->0xAA)实现了这一点,但我想知道CRC是否有任何属性可以用来提高效率。 这是我的代
我面临的问题与我的招摇文件: 这是我的问题: ✖Swagger Error非有效参数定义跳转到第20行详细信息目标代码:ONE_OF_MISSING参数:数组[0]消息:非有效参数定义路径:数组[5] 0:路径1:/货币/{当前ID} 2:获取3:参数4:0模式ID:http://swagger.io/v2/schema.json#内部:数组[2]级别:900类型:Swagger Error描述:
我正面临一个奇怪的问题,几乎花了4个小时没有运气。 我有一个简单的Web API,我正在表单提交时调用它。 API- HTML- 当我点击提交按钮时,我得到以下错误- 启动类中的配置- 这只发生在POST请求中。GET request工作正常。在邮递员REST客户端中测试时也会出现同样的问题。有什么需要帮忙的吗?如果我能提供更多的细节,请让我知道。
尽管这似乎很容易修复,但由于某种原因,我的.NET应用程序根本不将其视为有效的base64字符串。 我正在使用GMail API来获取消息,在我试图检索正文的最后一部分,我遇到了以下错误消息: 程序对它所获取的每条消息抛出异常,“第127行”位于“byte[]data”上。 我尝试在这个论坛中搜索类似的问题,但是,他们的解决方案似乎都不起作用,因为大多数人只是提供了将-and_符号更改为适合bas
如果可以选择在单个JPanel中进行所有渲染,或者在多个JPanel中进行渲染(使用override paintComponent),并且不使用任何其他Swing组件,例如JButtons、JTextBox、JComboxes等(面板所在的JFrame除外)。如果只使用drawLine、drawRectangle、fillRect等进行绘图,那么在一个面板中绘制所有内容还是将绘图展开到多个面板上更