七巧板涂色c语言程序

七巧板涂色c语言程序,第1张

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

const int a = 36

/*319 239*/

void inig(void)

void drw(int X, int Y)

void fill(int X, int Y,int t[7])

int main(void)

{

int count = 0, i, j, k, v

FILE *data

int t[7]

inig()

data = fopen("data.txt", "w")

for(t[0] = 1t[0]<5t[0]++)

{

for(t[1] = 1t[1]<5t[1]++)

{

if(t[1]==t[0])

continue

for(t[2] = 1t[2]<5t[2]++)

{

if(t[2]==t[0])

continue

for(t[3] = 1t[3]<5t[3]++)

{

if(t[3]==t[1] || t[3]==t[2])

continue

for(t[4] = 1t[4]<5t[4]++)

{

if(t[4]==t[0] || t[4]== t[2])

continue

for(t[5] = 1t[5]<5t[5]++)

{

if(t[5]==t[1] || t[5]== t[3])

continue

for(t[6] = 1t[6]<5t[6]++)

{

if(t[6]==t[2] || t[6]== t[3])

continue

for(i=0i<7i++)

{

fprintf(data," %d", t[i])

}

count++

fprintf(data,"\n")

}

}

}

}

}

}

}

fclose(data)

printf(" count = %d\n", count)

fopen("data.txt","r")

for(v=0v<countv = v+7)

{

cleardevice()

printf("%d", v )

for(i=50i<580i += 630/6)

{

for(j=50j<500j += 540/6)

{

for(k=0k<7k++)

fscanf(data,"%d", &(t[k]))

drw(i,j)

fill(i,j,t)

}

}

getch()

}

getch()

closegraph()

return 0

}

void drw(int X, int Y)

{

rectangle(X-a, Y-a, X+a, Y+a)

line(X-a, Y+a, X+a, Y-a)

line(X-a, Y-a, X+ a/2, Y+ a/2)

line(X, Y+a, X+a, Y)

line(X- a/2, Y+ a/2, X, Y+a)

line(X+ a/2, Y- a/2, X+a, Y)

}

void fill(int X, int Y,int t[7])

{

int i

for(i=-a+2i<0i++)

{

setcolor(t[0])

line(X+i-1, Y+i, X+i-1, Y)

line(X+i-1, Y-i, X+i-1, Y)

}

for(i=0i<a-1i++)

{

setcolor(t[1])

line(X+i, Y-i-1, X+i, Y-a+1)

line(X-i, Y-i-1, X-i, Y-a+1)

setcolor(t[6])

line(X+1+i, Y-1+a, X+1+i, Y-i+a)

}

for(i=a/2+1i<a-1i++)

{

setcolor(t[5])

line(X+i+1, Y-i, X+i+1, Y+i-a)

setcolor(t[4])

line(X-i, Y+i+1, X+i-a, Y+i+1)

setcolor(t[2])

line(X+i-a+1, Y-i+a, X+i-a+1, Y+i)

line(X-i+a-2, Y-i+a, X-i+a-2, Y+i)

setcolor(t[3])

line(X+i-a/2+1, Y-i+a/2, X+i-a/2+1, Y+i-a/2)

line(X-i+a*3/2-2, Y-i+a/2, X-i+a*3/2-2, Y+i-a/2)

}

}

void inig(void)

{

int gdriver = DETECT, gmode, errorcode

/* initialize graphics, local variables */

initgraph(&gdriver, &gmode, "")

errorcode = graphresult()

if (errorcode != grOk)

{

printf("Graphics error: %s\n",

grapherrormsg(errorcode))

printf("Press any key to halt:")

getch()

exit(1)

}

setcolor(getmaxcolor())

}

这不就是著名的四色问题吗?

答案如下:

{问题描述:任何一张地图只要用四种颜色进行填涂,就可以保证相邻省份不同色}

program tt

const num=20

var a:array [1..num,1..num] of 0..1

s:array [1..num] of 0..4{用1-4分别代表RBWY四种颜色0代表末填进任何颜色}

k1,k2,n:integer

function pd(i,j:integer):boolean{判断可行性:第I个省填上第J种颜色}

var k:integer

begin

for k:=1 to i-1 do {一直从第一个省开始进行比较一直到I省减一的那个省,目的是对已经着色的省份来进行比较,因为>I的省还没 有着色,比较没有意义,着色的顺序是先第一、二、三……I个省}

if (a[i,k]=1) and (j=s[k]) then {省I和省J相邻且将填进的颜色和已有的颜色相同}

begin

pd:=false{即不能进行着色}

exit {退出当前函数}

end

pd:=true {可以进行着色}

end

procedure print{打印结果}

var k:integer

begin

for k:=1 to n do{将数字转为RBWY串}

case s[k] of

1:write('R':4)

2:write('B':4)

3:write('W':4)

4:write('Y':4)

end

writeln

end

procedure try(i:integer)

var j:integer

begin

for j:=1 to 4 do

if pd(i,j) then begin

s[i]:=j

if i=n then print

else try(i+1) {对下一个省进行着色}

s[i]:=0 {不能进行着色,将当前状态设置0,即不进行着色}

end

end

BEGIN

write('please input city number: ')readln(n)

writeln('please input the relation of the cities:')

for k1:=1 to n do

begin

for k2:=1 to n do read(a[k1,k2]) {A[K1,K2]=1表示省K1、K2相邻,为0就不相邻}

readln

end

for k1:=1 to n do s[k1]:=0 {把所有的颜色设置为0,即还没有进行着色}

try(1)

END.

微信乐涂填色小程序游戏初始化的方法:

1、点击微信乐涂填色小程序。

2、点击界面右上角三个点按钮。

3、点击重新进入小程序的选项即可重置游戏。

4、乐涂是一款有意思的休闲解压类游戏,这款游戏中采用多种不同的模式以及玩法,另外含有大量的古典人物、风景等自由进行游戏。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11461845.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存