在一個2x2的格子圖形中,有三艘各佔一個格子的戰艦,戰艦的位置均在格子的範圍內。三艘戰艦重量皆不同,從1噸到3噸各有一艘,因為大霧瀰漫不知正確位置,僅知道每一列與每一行的總重量,請問聰明的你,知道每一艘戰艦的正確位置嗎?
舉例來說,如果我們知道每一列與每一行的總重量如下圖:

那麼這個戰艦謎題的一組正確答案如下圖:

注意:我們給的輸入資料不一定只有一組正確答案,這時候你只需輸出其中一組正確答案即可。此外,我們給的輸入資料有可能沒有正確的答案,這時候只需輸出"No solutions."即可。
輸入說明 :
總共有四個整數,每個數值間以一個空白字元隔開,這些數字個值均介於0到5之間。前2個整數依序表示每一列(row)的總重量,接下來的2個整數依序表示每一行(column)的總重量。
範例輸出 :
輸出範例一: 3 2 1 0
輸出範例二: 0 3 1 2
輸出範例三: No solutions.
#include<stdio.h> int a,b,c,d,e; int a1,b1,c1,d1; void main() { while(scanf("%d %d %d %d",&a,&b,&c,&d)!=EOF) { e=0; for(a1=0;a1<=a;a1++) { b1=a-a1; c1=c-a1; d1=b-c1; if(b1+d1==d&&a1>=0&&d1>=0&&b1>=0&&c1>=0) if(a1!=b1&&b1!=c1&&c1!=d1&&d1!=a1) if(a1==0||b1==0||c1==0||d1==0) if(a1==3||b1==3||c1==3||d1==3) if(a1==2||b1==2||c1==2||d1==2) if(a1==1||b1==1||c1==1||d1==1) { printf("%d %d\n%d %d\n",a1,b1,c1,d1); e++; break; }
}
if(e==0) printf("No solutions.\n");
} return 0; }
|