這道題來自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了。再看題解...