2011-07-21 3 views
0

円を行と列に分割し、円で形成された各ブロック(正方形)のサイズが同じです。私は各正方形/ブロックのXとYの座標を持っています。各ブロックは、良好または悪いと定義されています。アルゴリズムの問​​題

問題:同じ行に2つのブロックを追加し、結果が良いか悪いかを判断する必要があります。いずれかのブロックが不良である場合、2つのブロックのグループは不良と呼ばれます。両方が良い場合、グループだけが良いです。どのようなアルゴリズムですか?私は視覚的な基本言語で行う必要があります。また、私は3つのブロックを追加するような場合を増やし、3つのブロックのグループが良いか悪いかを判断する必要があります。この場合、ブロックが不良であれば、グループ全体が悪いです。

更新:円を行と列、つまりブロックに分割すると、四角形ではないブロックが削除されます。つまり、円の円に接している正方形/ブロックが削除されます。私は今明日写真をアップロードできます。

+5

コメント:1)それは手動入力(/良い悪い何を意味するかを明記してください)2)優れた応答のために、あなたが今持っているものの絵を描くしようとすると、何が必要?後で。 –

+0

私はここに写真を載せようとしましたが、私の得点はここでは十分ではありませんでした。私の得点は10です。 – user847323

+0

はい、良い/悪い入力です。私はブロックをテストし、いくつかのブロックは動作していて、他のブロックは動作していません。だから、私は彼らにこの名前を与える - 良い/悪い。 – user847323

答えて

0

次の2つを追加する場合は、片方不正ブロックのいずれかの側の両方が

1上の3不良につながるも悪い意味する)構造体のN×Nのアレイを設定{BOOLの内接円、不正ブロック、badGroupを;} 内接円ブロックがサークル内にある場合はtrue、badBlockはブロックが不良で、badGroupがfalseの場合はtrueです。

3)

int length=2; 
length--; 
for (int i=0; i<N;i++) 
    for(int j=0; j<N;j++) 
    if(array[i,j].badBlock){ 
     for(int x=-length;x<=length;x++) 
      if(i+x>=0 and i+x<N and array[i+x,j].inCircle) then array[i+x,j].badGroup=true; 
     for(int y=-length;y<=length;y++) 
      if(j+y>=0 and j+y<N and array[i,j+y].inCircle) then array[i,j+y].badGroup=true; 
} 
+0

ねえ...この解決策は神ですが、私はcloumnの場合を確認する必要はありません。同様に、私は行を反復するとき、私は行にあるブロックだけを考慮する。ここで更新された質問を見ることができ、適切なソリューションを手に入れるのに役立ちます。 – user847323

+0

http://stackoverflow.com/questions/6780456/algorithm-problem-with-the-picture-attached – user847323

関連する問題