tián chōng suàn fǎ shì jì suàn jī suàn fǎ de yī zhǒng fēn lèi, shì yī gè jiāng zhǐ dìng bù guī zé qū yù nèi bù xiàng sù tián chōng wéi tián chōng sè de guò chéng, zài jì suàn jī fǔ zhù shè jì hé tú xiàng chǔlǐ děng lǐng yù yòu guǎng fàn yìng yòng。 bāo kuò liǎo zhǒng zǐ tián chōng suàn fǎ 、 sǎo miáo xiàn tián chōng suàn fǎ 、 biān tián chōng suàn fǎ děng。
zhǒng zǐ tián chōng suàn fǎ
lù lù zhǒng zǐ tián chōng suàn fǎ yòu chēng wéi biān jiè tián chōng suàn fǎ 。 qí jī běn sī xiǎng shì: cóng duō biān xíng qū yù de yī gè nèi diǎn kāi shǐ, yóu nèi xiàng wài yòng gěi dìng de yán sè huà diǎn zhí dào biān jiè wéi zhǐ。 rú guǒ biān jiè shì yǐ yī zhǒng yán sè zhǐ dìng de, zé zhǒng zǐ tián chōng suàn fǎ kě zhú gè xiàng sù dì chǔlǐ zhí dào yù dào biān jiè yán sè wéi zhǐ。
zhǒng zǐ tián chōng suàn fǎ cháng yòng sì lián tōng yù hé bā lián tōng yù jì shù jìn xíng tián chōng cāo zuò。
lù lù cóng qū yù nèi rèn yì yī diǎn chū fā, tōng guò shàng、 xià、 zuǒ、 yòu sì gè fāng xiàng dào dá qū yù nèi de rèn yì xiàng sù。 yòng zhè zhǒng fāng fǎ tián chōng de qū yù jiù chēng wéi sì lián tōng yù; zhè zhǒng tián chōng fāng fǎ chēng wéi sì xiàng lián tōng suàn fǎ。
lù lù cóng qū yù nèi rèn yì yī diǎn chū fā, tōng guò shàng、 xià、 zuǒ、 yòu、 zuǒ shàng、 zuǒ xià、 yòu shàng hé yòu xià bā gè fāng xiàng dào dá qū yù nèi de rèn yì xiàng sù。 yòng zhè zhǒng fāng fǎ tián chōng de qū yù jiù chēng wéi bā lián tōng yù; zhè zhǒng tián chōng fāng fǎ chēng wéi bā xiàng lián tōng suàn fǎ。
lù lù yī bān lái shuō, bā xiàng lián tōng suàn fǎ kě yǐ tián chōng sì xiàng lián tōng qū yù, ér sì xiàng lián tōng suàn fǎ yòu shí bù néng tián chōng bā xiàng lián tōng qū yù。 lì rú, bā xiàng lián tōng tián chōng suàn fǎ néng gòu zhèng què tián chōng rú tú 2.4a suǒ shì de qū yù de nèi bù, ér sì xiàng lián tōng tián chōng suàn fǎ zhǐ néng wán chéng rú tú 2.4b de bù fēn tián chōng。
tú 2.4 sì xiàng lián tōng tián chōng suàn fǎ
a) lián tōng yù jí qí nèi diǎn b) tián chōng sì lián tōng yù
sì xiàng lián tōng tián chōng suàn fǎ :
a) zhǒng zǐ xiàng sù yā rù zhàn zhōng;
b) rú guǒ zhàn wéi kōng, zé zhuǎn e); fǒu zé zhuǎn c);
c) dàn chū yī gè xiàng sù, bìng jiāng gāi xiàng sù zhì chéng tián chōng sè; bìng pàn duàn gāi xiàng sù xiāng lín de sì lián tōng xiàng sù shì fǒu wéi biān jiè sè huò yǐ jīng zhì chéng duō biān xíng de tián chōng sè, ruò bù shì, zé jiāng gāi xiàng sù yā rù zhàn;
d) zhuǎn b);
e) jié shù。
sì xiàng lián tōng tián chōng fāng fǎ kě yǐ yòng dì guī hán shù shí xiàn rú xià:
suàn fǎ 2.3 sì xiàng lián tōng dì guī tián chōng suàn fǎ :
voidBoundaryFill4(intx,inty,longFilledColor,longBoundaryColor)
{
lù lù longCurrentColor;
lù lù CurrentColor=GetPixelColor(x,y);
lù lù if(CurrentColor!=BoundaryColor&&CurrentColor!=FilledColor)
lù lù {
lù lù lù SetColor(FilledColor);
lù lù lù SetPixel(x,y);
lù lù lù BoundaryFill4(x+1,y,FilledColor,BoundaryColor);
lù lù lù BoundaryFill4(x-1,y,FilledColor,BoundaryColor);
lù lù lù BoundaryFill4(x,y+1,FilledColor,BoundaryColor);
lù lù lù BoundaryFill4(x,y-1,FilledColor,BoundaryColor);
lù lù }
}
lù lù shàng shù suàn fǎ de yōu diǎn shì fēi cháng jiǎn dān, quē diǎn shì xū yào dà liàng zhàn kōng jiān lái cún chǔ xiāng lín de diǎn。 yī gè gǎi jìn de fāng fǎ jiù shì: tōng guò yán sǎo miáo xiàn tián chōng shuǐ píng xiàng sù duàn, lái chù lǐ sì lián tōng huò bā lián tōng xiāng lín diǎn, zhè yàng jiù jǐn jǐn zhǐ xū yào jiāng měi gè shuǐ píng xiàng sù duàn de qǐ shǐ wèi zhì yā rù zhàn, ér bù xū yào jiāng dāng qián wèi zhì zhōu wéi shàng wèi chǔlǐ de xiāng lín xiàng sù dū yā rù zhàn, cóng 'ér kě yǐ jié shěng dà liàng de zhàn kōng jiān。 |