A6.pdf

‫ﻣﺒﺎﻧ ﺑﺮﻧﺎﻣﻪﺳﺎزی‬
‫ﻧﯿﻢﺳﺎل دوم ‪٩٢-٩٣‬‬
‫ﻣﺪرس‪ :‬اﻣﯿﺪ ﻏﯿﺒ‬
‫داﻧﺸ ﺪهی ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ‬
‫ﺗﻤﺮﯾﻦ ﺳﺮی ﺷﺸﻢ‬
‫ﻣﻮﻋﺪ ﺗﺤﻮﯾﻞ‪ ١١ :‬ﺧﺮدادﻣﺎه‬
‫ﺳﺆال ‪ ٢۵] .١‬ﻧﻤﺮه[‬
‫ﯾ‬
‫ﻣ ﻌﺐ ‪ n × n × n‬در ﻧﻈﺮ ﺑ ﯿﺮﯾﺪ ﮐﻪ در ﻣﺮﮐﺰ ﻣﺨﺘﺼﺎت واﻗﻊ ﺷﺪه اﺳﺖ )در ﻧﯿﻤﻪی ﻣﺜﺒﺖ ﻣﺤﻮرﻫﺎی ﻣﺨﺘﺼﺎت‪ .‬ﻫﻤﺎﻧﻨﺪ‬
‫ﺷ ﻞ(‪ .‬اﯾﻦ ﻣ ﻌﺐ از ﻣ ﻌﺐﻫﺎی ﮐﻮﭼ ﺘﺮ ﺑﺎ اﻧﺪازهی ‪ ١ × ١ × ١‬ﺗﺸ ﯿﻞ ﺷﺪه اﺳﺖ‪ .‬داﺧﻞ ﻫﺮﯾ‬
‫ﭘﺮ از آب اﺳﺖ‪ .‬ﺗﻔﻨ‬
‫در ﻧﻘﻄﻪی )‪ ،(x, y, z‬واﻗﻊ ﺷﺪه اﺳﺖ‪ .‬از اﯾﻦ ﺗﻔﻨ‬
‫از اﯾﻦ ﻣ ﻌﺐﻫﺎی ‪١ × ١ × ١‬‬
‫→‬
‫‪ −‬ﮔﻠﻮﻟﻪای ﺷﻠﯿ‬
‫در راﺳﺘﺎی ) ‪u = (u١ , u٢ , u٣‬‬
‫ﻣ ﺷﻮد‪ .‬ﻓﺮض ﺑﺮ اﯾﻦ اﺳﺖ ﮐﻪ ﻣﺴﯿﺮ ﺣﺮﮐﺖ اﯾﻦ ﮔﻠﻮﻟﻪ ﻣﺴﺘﻘﯿﻢ اﺳﺖ )ﺣﺘ در ﻫﻨ ﺎم ﺑﺮﺧﻮرد ﺑﺎ ﻣ ﻌﺐ و ﺑﻌﺪ از آن(‪ .‬ﻣ ﺧﻮاﻫﯿﻢ‬
‫ﺣﺠﻢ آب ﺗﺨﻠﯿﻪﺷﺪه از اﯾﻦ ﻣ ﻌﺐ را اﻧﺪازه ﺑ ﯿﺮﯾﻢ‪ .‬ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ آب ﻫﺮ ﻣ ﻌﺐ ﺳﻮراخ ﺷﺪه در داﺧﻞ ﻣ ﻌﺐ‪ ،‬ﺑﻪ ﻣ ﻌﺐﻫﺎی‬
‫ﻣﺠﺎور ﺳﻮراخﺷﺪهاش ﻣ رﯾﺰد‪.‬‬
‫‪z‬‬
‫→‬
‫‪−‬‬
‫) ‪u = (u1 , u2 , u3‬‬
‫‪x‬‬
‫)‪(x, y, z‬‬
‫)‪(n, n, 0‬‬
‫‪y‬‬
‫ورودی‪.‬‬
‫اﺑﺘﺪا ‪ n‬ﺑﻪ ﻋﻨﻮان ورودی داده ﻣ ﺷﻮد‪ .‬ﺑﻌﺪ از آن ﺳﻪ ﻋﺪد ﺑﻪ ﻋﻨﻮان )‪ (x, y, z‬و ﺳﻪ ﻋﺪد ﺑﺮای ) ‪ (u١ , u٢ , u٣‬داده‬
‫ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫ﺧﺮوﺟ ‪.‬‬
‫ﻣﯿﺰان ﮐﻞ آب ﺧﺮوﺟ از ﻣ ﻌﺐ‪.‬‬
‫‪output:‬‬
‫‪input:‬‬
‫‪54.9‬‬
‫‪100‬‬
‫‪105.5 0.5 0.451‬‬
‫‪-1.0 0.0 0.0‬‬
‫‪١‬‬
‫ﺳﺆال ‪ ١۵] .٢‬ﻧﻤﺮه[‬
‫در ﻣﻨﻄﻘﻪای ﺟﺰاﯾﺮ ﻣﺘﻌﺪدی وﺟﻮد دارد‪ .‬اﻣﺎ ﺑﺮای رﻓﺘﻦ از ﯾ‬
‫ﻣﻌﻨﺎ ﮐﻪ ﻣﻤ ﻦ اﺳﺖ ﺑﺮای رﻓﺘﻦ ﺑﻪ ﺟﺰﯾﺮهای‪ ،‬اﺑﺘﺪا ﺑﻪ ﯾ‬
‫ﺟﺰﯾﺮه ﺑﻪ ﺟﺰاﯾﺮ دﯾ ﺮ ﻟﺰوﻣﺎً ﻣﺴﯿﺮ ﻣﺴﺘﻘﯿﻢ وﺟﻮد ﻧﺪارد؛ ﺑﻪ اﯾﻦ‬
‫ﺟﺰﯾﺮهی ﺳﻮﻣ رﻓﺖ‪ ،‬و از آنﺟﺎ ﺑﻪ ﺟﺰﯾﺮهی ﻣﻘﺼﺪ رﺳﯿﺪ‪ .‬در اﯾﻦ ﺑﯿﻦ‬
‫ﺗﻨ ﻪﻫﺎﯾ وﺟﻮد دارد )ﻣﺜﻞ ﺗﻨ ﻪی ﻫﺮﻣﺰ!(‪ ،‬ﻫﺪف ﭘﯿﺪا ﮐﺮدن اﯾﻦ ﺗﻨ ﻪﻫﺎﺳﺖ‪.‬‬
‫]ﺗﻮﺿﯿﺢ‪ .‬اﮔﺮ ﻫﺮ ﺟﺰﯾﺮه را ﯾ‬
‫ﮔﺮه در ﮔﺮاف در ﻧﻈﺮ ﺑ ﯿﺮﯾﺪ‪ ،‬ﯾ‬
‫ﺗﻨ ﻪ ﺑﯿﻦ دو ﺟﺰﯾﺮه ﺑﻪ ﻣﻌﻨﺎی ﯾﺎﻟ از ﮔﺮاف اﺳﺖ ﮐﻪ اﮔﺮ‬
‫ﺣﺬف ﺷﻮد‪ ،‬آن ﮔﺮاف ﻧﺎﻫﻤﺒﻨﺪ ﺧﻮاﻫﺪ ﺷﺪ‪ .‬ﻣﻤ ﻦ اﺳﺖ ﺗﻨ ﻪای وﺟﻮد ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ‪[.‬‬
‫‪6‬‬
‫‪4‬‬
‫‪strait‬‬
‫‪7‬‬
‫‪3‬‬
‫‪5‬‬
‫‪strait‬‬
‫‪1‬‬
‫‪2‬‬
‫در ﭘﯿﺎدهﺳﺎزی‪ ،‬ﺑﺮای ﻧ ﻪداری ﺟﺰﯾﺮهﻫﺎ ﺑﺎﯾﺪ از ‪ class‬زﯾﺮ اﺳﺘﻔﺎده ﮐﻨﯿﺪ )ﺳﺎزﻧﺪهﻫﺎ و ﻣﺨﺮبﻫﺎی ﻣﻨﺎﺳﺐ ﺗﻌﺮﯾﻒ ﮐﻨﯿﺪ‪ .‬ﻋﻼوه‬
‫ﺑﺮ اﯾﻦ‪ ،‬ﻫﺮ ﺗﺎﺑﻊ و ﯾﺎ ﻣﺘﻐﯿﺮ دﯾ ﺮی ﮐﻪ ﺑﺮای ﭘﯿﺎدهﺳﺎزی ﻻزم اﺳﺖ‪ ،‬ﺑﺎﯾﺪ ﺑﻪ ﺗﻌﺮﯾﻒ ﮐﻼس زﯾﺮ اﺿﺎﻓﻪ ﺷﻮد و ﯾﺎ ﮐﻼس ﻣﻨﺎﺳﺐ‬
‫دﯾ ﺮی ﺗﻌﺮﯾﻒ ﺷﻮد(‪.‬‬
‫{ ‪class Island‬‬
‫‪int id; // each island has an identity number.‬‬
‫;‪Island* neighbors‬‬
‫‪public:‬‬
‫;)*‪Island (int, Island‬‬
‫;}‬
‫ورودی‪ .‬اﺑﺘﺪا ﯾ‬
‫ﻋﺪد وارد ﻣ ﺷﻮد ﮐﻪ ﺗﻌﺪاد ارﺗﺒﺎطﻫﺎ )ﯾﺎلﻫﺎ( را ﻧﺸﺎن ﻣ دﻫﺪ‪ .‬ﺳﭙﺲ ﺑﻪ ﻫﻤﺎن ﺗﻌﺪاد‪ ،‬زوج ﻋﺪدی وارد‬
‫ﻣ ﺷﻮد ﮐﻪ وﺟﻮد ﻣﺴﯿﺮ ﺑﯿﻦ دو ﺟﺰﯾﺮه ﺑﺎ ‪id‬ﻫﺎی ﻧﻮﺷﺘﻪﺷﺪه را ﻣﺸﺨﺺ ﻣ ﮐﻨﺪ‪.‬‬
‫ﺧﺮوﺟ ‪.‬‬
‫ﻫﺮ ﺗﻨ ﻪ )‪ (strait‬ﺑﯿﻦ دو ﺟﺰﯾﺮه واﻗﻊ ﺷﺪه اﺳﺖ‪ .‬ﺑﻨﺎﺑﺮاﯾﻦ ﺧﺮوﺟ زوجﻫﺎﯾ از ‪ id‬ﺟﺰﯾﺮهﻫﺎﯾ اﺳﺖ ﮐﻪ ﺗﻨ ﻪای‬
‫ﺑﯿﻦ آنﻫﺎ وﺟﻮد دارد‪.‬‬
‫‪output:‬‬
‫‪input:‬‬
‫‪3 4‬‬
‫‪8‬‬
‫‪3 5‬‬
‫‪1 2‬‬
‫‪2 3‬‬
‫‪1 3‬‬
‫‪3 4‬‬
‫‪3 5‬‬
‫‪5 6‬‬
‫‪6 7‬‬
‫‪7 5‬‬
‫‪٢‬‬