如何使用标志编码
How can i use flag coding?
嗨,我是 C++ 的初学者
好吧,我以前从未使用过标志,有人告诉我可以使用标志:
我需要使用标志编码填充此形状
好吧,这是代码:
#include <iostream>
using namespace std;
int polygon[10][10] =
{
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,2,2,2,2,1,1,1},
{1,1,1,2,1,1,2,1,1,1},
{1,2,2,2,1,1,2,2,2,1},
{1,2,1,1,1,1,1,1,2,1},
{1,2,1,1,1,1,1,1,2,1},
{1,2,1,1,1,1,1,1,2,1},
{1,2,1,1,1,1,1,1,2,1},
{1,2,2,2,2,2,2,2,2,1},
{1,1,1,1,1,1,1,1,1,1},
};
int main()
{
int row,column;
char c='y';
for (int row = 0; row<10; row++)
{
for (int column=0; column <10; column++)
{
if(polygon[row][column]==1) cout << " ";
else if(polygon[row][column]==2)
{
cout << "+";
}
else
cout << " ";
}
cout << "n";
}
system("pause");
}
此代码将打印出带有顶部的方形形状关于如何使用标志编码填写此形状的任何想法
例如在数组中,我可以像 如果行和列到达前 2 个,它将开始用 0 填充形状,当它遇到另一侧的其他 2 个时,它会停止并开始一个新行直到形状被填充
我不知道如何使用这里的标志,我只知道这个概念
任何人都可以帮忙吗
while( polygon[row][column] == 2)
{
row+=0;
if (row == 2)
{
// in this part i need to go to the next line
}
}
我的朋友给了我做这样的事情以填充形状的提示,但我不太明白她
在编程中,术语"flag"通常由布尔类型表示。在编程的意义上,标志就像一个开关,它要么打开(真(,要么关(假(。我注意到您的形状由 1
s 和 2
s 组成,并且只能猜测您的朋友何时建议您使用"标志编码",他们的意思是您使用 bool
数据类型。或者,在C++ 0
将计算为在条件中false
(if (0)
与if (false)
相同(,因此您可以使用0
代替1
和2
1
(表示"不是形状的一部分"(并1
代替您的2
(表示"形状的一部分(。
从这里开始,您的比较将更简单一些,而不是if (polygon[row][column] == 2)
您可以编写if (polygon[row][column])
,只有当 polygon[row][column]
处的值不为零时,该值才会计算为 true。
你可以做的是有一个标志,上面写着"我在形状中吗?每次遇到形状的边框时,都需要打开此标志,如果它已打开并且遇到另一个边框,则需要将其关闭。
编辑:
水平边界是一个挑战。真正知道使用常规扫描的唯一方法是扫描直到线的尽头,并且只有当有另一个边框时,您才处于形状中。
如果您可以假设遇到的第一个边框是水平的,那就更容易了,但是识别底部水平边框仍然存在问题。
您可以通过首先从顶部扫描,找到带有边框的第一行来解决这个问题。现在您可以知道该行中没有"形状"区域。然后您可以从底部扫描找到带有边框的最后一行。现在你可以知道这条线没有"形状"区域。剩下的就是使用之前建议的算法在这两条线之间扫描。
假设画布必须包含一个简单的闭合多边形,您可以做的是:从边框将所有外部字段更改为"3",将它们"标记"为外部字段:
- start at a corner and go round the edges (assuming polygon can be on the edge).
is the field 1?
- make it a 3.
- repeat this for all (not diagonal) neighbouring fields in a recursive way.
- when printing, use a different character for
- 1 (inside)
- 2 (border)
- other (outside)
- 如何确定我已使用非编码文件到达 EOF?
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 在卡萨布兰卡形成编码参数的列表
- 使用C++进行游程编码
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 即使使用调试编译标志,表达式也是"optimized out"
- 在 CMake 中为每个目标设置编译器/链接器标志
- 使用已使用 java 编码的 openssl 解码数据
- boost 是否有按特殊类型值编码状态"compact optional"?
- 如何在CPP的给定目录中列出UTF编码的文件名?
- 如何使用 C++将 ISO-2022-KR 编码转换为 UTF-8 编码?
- File.cpp.o:OpenPose 标志 CMakeFiles/.. 的多重定义/main.cpp.o:首先在这里定
- 绝对编码器十六进制输入
- 在轮班操作后使用携带标志
- 如何找出引入AVX标志的内容
- 防止C++中的硬编码数字
- I2C 文件描述符上的 I2C 总线可写/可读标志
- C ++是否有C ++ 17 OSX 10.13.6的标志
- 解码像 FAST 这样的数据协议的快速方法是什么,其中数据以字节为单位编码,并将位作为存在标志
- 如何使用标志编码