Matlab:N个皇后(检查2个表的对称性)

时间:2014-04-22 05:19:04

标签: matlab

我正在尝试制作一个简单的脚本,可以决定两个棋盘是相似还是相同或不同。如果它首先是相同的大小(例如3x3),我必须测试它,因为如果不是我不应该首先运行测试。我还必须对第一块电路板进行垂直和水平翻转,然后将它们与第二块电路板进行比较,看看两个电路板中是否有任何一个与第二块电路板匹配。 这是我到目前为止的代码:

function similar = symmetric_queens(b1, b2) %b1 is table 1 and b2 is table 2
similar= true;
h1= flipud(b1); %flipping about horizontal axis
v1= fliplr(b1); %flipping about vertical axis
if
     b1==b2;
     imshow('The boards are identical')  %because they are exactly the same
end
    if 
        size(b1)==size(b2)  %if they are of equal size test if horizontal flip= second board
        h1=b2  
        imshow('true')
else
    v1=h2 %test if vertical flip = second board
    imshow('true')

else              %in these two codes I am trying to check make the function stop if the boards arent the same size
 size(b1)>size(b2)  
    similar = false;                 
    return;                        

else
    size(b1)<size(b2)
    similar = false;                   
    return;                         
end
end

我认为有很多错误会导致我的代码不能解决问题,任何帮助都会受到高度赞赏。 我很抱歉,如果我没有发布此权利,或者我做错了,因为这是我第一次在这里发帖。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我会想到做同样事情的有点组织代码 -

function similar = symmetric_queens(b1, b2) %b1 is table 1 and b2 is table 2

%%// Check for equal sizes
if ~isequal(size(b1),size(b2))
    similar = false;
    return;
end

if isequal(b2,b1) %%// Check for perfect match
    disp('The boards are identical');
    similar = true; %%// What to return for - similar value when they are identical? Assumed - true
elseif isequal(b2,fliplr(b1)) || isequal(b2,flipud(b1)) %%// Check horizontal and vertical flip
    disp('The boards are similar');
    similar = true;
else
    similar = false;
end

return;

注意:我不确定您使用imshow的原因。也许你的意思是显示文字?这就是代码的作用。