UVA1587 BOX 紫書習題j box

2021-09-30 20:01:44 字數 966 閱讀 4874

這道題來自uva,上面是原題

大概題意:

給出六個面判斷這六個面是否能構成長方體

輸入:每個面的長寬

輸出:possible或impossible

我的基本思路是先排序後根據條件判斷。

假設三個數a>b>c,如果這三個數能構成乙個長方體,那麼排序後這三個數所組成的六個面以此應該是:

ab ab ac ac bc bc

這樣再根據構成長方體的條件(a,b,c所對應位置值相等)判斷即可。

以下是我ac的**(有點長,哈哈哈)

#includevoid swap(int *a,int *b)

int main()

//到這兒每個面的長寬都是寬在前

flag=1;

///按照ab ab ac ac bc bc 排序

for(i=0;i<6;i++)

else if(a[i]==a[j]&&b[i]>b[j])}}

////判斷是否為三個完全一樣的對面

for(i=0;i<6;i+=2)

}if(flag)

if(flag)

printf("possible\n");

else

printf("impossible\n");

}return 0;

}

最後總結下我所犯的錯誤

在排序時未將a[0],b[0]排序

在後面排序時開始是先按照a陣列排序,然後按照b陣列排序。想要達到效果忽略了在按照b陣列排序時會打亂排好了的a。

在拼寫impossible時未採用複製手段,導致卡在這個地方一直wa。

這道題個人認為重點是在排序。為了交換方便我就採用了交換函式,開始未用指標就不能將值傳回主函式。

以上僅供參考

UVa 1587 Box (判斷長方體)

題意 給出六個矩形的長和寬,判斷這六個矩形能不能構成長方體。思路 符合條件的情況只有三種 只出現一種數字 出現兩種數字 出現三種數字且每種都只出現4次 第一次,只考慮了兩種情況 一種數字或三種數字 而且在三種數字這種情況下只是簡單的用 每種數字都出現4次 限定,wa了。又推倒重寫,半個小時才寫完第二...

演算法競賽入門經典 UVa1587Box

這題一定要好好說道說道。這題第一次寫的時候,我居然二到,只判斷了兩個面相等,當然wa。調整之後,一直還是wa,接下來,bug就找了很久都沒有找到,第二天又花了很久時間再看,又修改了幾次輸入格式,懷疑我的輸入格式有問題,最終找到的問題是 我只判斷了第一條,第二條是4的,倍數,第三條沒有判斷,因為我原本...

紫書 習題 9 8 uva1632

題意 有n個寶藏,每個都在乙個位置p i 在規定的時間t i 就會消失。阿里巴巴要在寶藏消失前收集齊所有寶藏,問 有方法嗎?有的話最少多少秒?思路 開始想的是用狀態轉移方程來乙個個判斷,不好寫。看了題解知道在一段區間 l,r 要使時間最短必須從端點出來,然後果斷寫了乙個記憶化搜尋,tle了。再看題解...