))ﺑﻪ ﻧﺎم ﺧﺪاوﻧﺪ ﺑﺨﺸﻨﺪه ي ﻣﻬﺮﺑﺎن (( ﺗﻤﺮﻳﻦ ﺷﻤﺎره ي- 4درس ﻃﺮاﺣﻲ اﻟﮕﻮرﻳﺘﻤﻬﺎ ﻣﻬﻠﺖ ﺗﺤﻮﻳﻞ ﺗﻤﺮﻳﻦ 1387/3/ 5:ﺳﺎﻋﺖ 23:59 ) (Dynamic Programming ﻣﻼﺣﻈﺎت : اﻳﻦ ﺗﻤﺮﻳﻦ ﻫﻢ داراي ﻗﺴﻤﺘﻬﺎي ﺗﺌﻮري و ﻫﻢ ﻋﻤﻠﻲ اﺳﺖ .ﭘﺎﺳﺦ ﻗﺴﻤﺘﻬﺎي ﺗﺌﻮري و ﻋﻤﻠﻲ را در ﻗﺎﻟﺐ ﻳﻚ ﻓﺎﻳﻞ ﻓﺸﺮده ﺑﻪ ﻧﺎم Ex4-yourID.zipﺑﻪ آدرس sharifdaexer@gmail.comﻣﻴﻞ ﻛﻨﻴﺪ .ﻋﻨﻮان ﭘﺴﺖ اﻟﻜﺘﺮوﻧﻴﻜﻲ ﻧﻴﺰ Ex4-yourIDﺑﺎﻳﺪ ﺑﺎﺷﺪ. ﺑﻪ ﻫﻴﭻ وﺟﻪ ﻛﺎر ﻫﺎي ﻏﻴﺮ اﺧﻼﻗﻲ ﻣﺜﻞ روﻧﻮﻳﺴﻲ و ﻛﭙﻲ ﺑﺮﻧﺎﻣﻪ ي دﻳﮕﺮان و ....ﭘﺬﻳﺮﻓﺘﻪ ﻧﻴﺴﺖ .درﺻﻮرت ﻣﺸﺎﻫﺪه ﻧﻤﺮه ي ﺷﻤﺎ -100در ﻧﻈﺮﮔﺮﻓﺘﻪ ﻣﻲ ﺷﻮد) .اﮔﺮ ﺗﻤﺮﻳﻨﺎت را ﺑﺎ ﻫﻢ ﻣﻲ ﻧﻮﻳﺴﻴﺪ ﺳﻌﻲ ﻛﻨﻴﺪ ﻃﺮﻳﻖ ﻧﻮﺷﺘﻦ ﺷﻤﺎ ﻣﺎﻧﻨﺪ ﻳﻜﺪﻳﮕﺮ ﻧﺒﺎﺷﺪ .ﭼﻮن در ﺻﻮرت ﻣﺸﺎﺑﻬﺖ ﺑﺎ وﺟﻮد ﺑﻲ ﮔﻨﺎﻫﻲ ،ﮔﻨﺎﻫﻜﺎر ﺷﻨﺎﺧﺘﻪ ﺧﻮاﻫﻴﺪ ﺷﺪ و ﻧﻤﺮه ي ﺧﻮد را از دﺳﺖ ﺧﻮاﻫﻴﺪ داد( ﺑﻪ ﻫﻴﭻ وﺟﻪ زﻣﺎن ﺗﺤﻮﻳﻞ اﻳﻦ ﺗﻤﺮﻳﻦ ﺗﻤﺪﻳﺪ ﻧﻤﻲ ﺷﻮد .ﺑﻪ ازاي ﻫﺮﺳﺎﻋﺖ ﺗﺎﺧﻴﺮ 20ﻧﻤﺮه )از 100ﻧﻤﺮه( را از دﺳﺖ ﻣﻲ دﻫﻴﺪ. -ﻫﺮ ﮔﻮﻧﻪ ﺳﻮال و ﻣﺸﻜﻠﻲ و ﻳﺎ اﻳﺮادي را ﻣﻲ ﺗﻮاﻧﻴﺪ ﺑﺎ mohammadamin.fazli@gmail.comدر ﻣﻴﺎن ﺑﮕﺬارﻳﺪ. -1ﺑﻠﻨﺪﺗﺮﻳﻦ ﭘﻴﺸﻮﻧﺪ ☻ﺗﻌﺮﻳﻒ : 1ﺑﻪ ﻛﺎراﻛﺘﺮ ﻫﺎي اول ﺗﺎ kام ﻳﻚ رﺷﺘﻪ ﭘﻴﺸﻮﻧﺪ kام آن رﺷﺘﻪ ﻣﻲﮔﻮﻳﻴﻢ. ﺗﻌﺮﻳﻒ : 2ﻣﻲﮔﻮﻳﻴﻢ ﻳﻚ رﺷﺘﻪ از روي ﻳﻚ ﺳﺮي رﺷﺘﻪي ﭘﺎﻳﻪ ﻗﺎﺑﻞ ﺳﺎﺧﺖ اﺳﺖ اﮔﺮ و ﻓﻘﻂ اﮔﺮ ﺑﺘﻮان ﺑﺎ اﺗﺼﺎل) (concatenationﺗﻌﺪادي ازاﻳﻦ رﺷﺘﻪ ﻫﺎي ﭘﺎﻳﻪ ﺑﻪ آن رﺷﺘﻪ رﺳﻴﺪ. در ﻓﺎﻳﻞ ورودي ﺑﻪ ﻧﺎم prefix.inﺗﻌﺪادي رﺷﺘﻪي ﭘﺎﻳﻪ )ﺣﺪاﻛﻨﺮ 200ﺗﺎ( و ﻫﺮ ﻛﺪام ﺑﻪ ﻃﻮل ﺣﺪاﻛﺜﺮ 10ﻛﺎراﻛﺘﺮ ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ ﻛﻪ ﻓﻘﻂ از ﺣﺮوف ﺑﺰرگ اﻧﮕﻠﻴﺴﻲ ﺗﺸﻜﻴﻞ ﺷﺪه اﻧﺪ و ﺑﺎ ﻛﺎراﻛﺘﺮ ﻫﺎي ﻓﺎﺻﻠﻪ)" "\nو " "و ""\tو (...از ﻫﻢ ﺟﺪا ﮔﺮدﻳﺪه اﻧﺪ .ﺑﻌﺪ از آن در اﻳﻦ ﻓﺎﻳﻞ ﻳﻚ ﻛﺎراﻛﺘﺮ " ".و ﺑﻌﺪ از آن ﻳﻚ رﺷﺘﻪ ي ﻫﺪف ﺑﺎ ﻃﻮل ﺣﺪاﻛﺜﺮ 200000و ﺗﺸﻜﻴﻞ ﺷﺪه ﺗﻨﻬﺎ از ﺣﺮوف ﺑﺰرگ اﻧﮕﻠﻴﺴﻲ ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ .ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ورودي زﻳﺮ را ﺑﺒﻴﻨﻴﺪ: ﺑﺮﻧﺎﻣﻪ اي ﺑﻨﻮﻳﺴﻴﺪ )در ﻓﺎﻳﻞ prefix.cppﻳﺎ (prefix.javaﻛﻪ اﻳﻦ ﻓﺎﻳﻞ ورودي را درﻳﺎﻓﺖ ﻛﻨﺪ .ﺑﺰرﮔﺘﺮﻳﻦ ﻋﺪد kرا ﭘﻴﺪا ﻛﻨﺪ ﻛﻪ ﭘﻴﺸﻮﻧﺪ kام رﺷﺘﻪ ي ﻫﺪف ﺗﻮﺳﻂ رﺷﺘﻪ ﻫﺎي ﭘﺎﻳﻪ ﻗﺎﺑﻞ ﺳﺎﺧﺖ ﺑﺎﺷﺪ .ﺳﭙﺲ اﻳﻦ ﻋﺪد kرا در ﻓﺎﻳﻞ ﺧﺮوﺟﻲ prefix.outﺑﻨﻮﻳﺴﺪ .ﻣﺜﺎل ﺧﺮوﺟﻲ ﺑﺮاي ﻓﺎﻳﻞ ﺧﺮوﺟﻲ ﺑﻪ ازاي ورودي ﺑﺎﻻ را ﺑﺒﻨﻴﻨﺪ : -2ﻛﻤﺘﺮﻳﻦ اﺧﺘﻼف ☺ ﻣﻲ ﺧﻮاﻫﻴﻢ ﻳﻚ ﻣﺠﻤﻮﻋﻪ ي nﻋﻀﻮي را ﻃﻮري ﺑﻪ دو ﻗﺴﻤﺖ اﻓﺮاز ﻛﻨﻴﻢ ﻛﻪ اﺧﺘﻼف 2ﻣﺠﻤﻮع اﻋﻀﺎي دو ﻣﺠﻤﻮﻋﻪ ﻛﻤﻴﻨﻪ ﺷﻮد .ﻳﻚ اﻟﮕﻮرﻳﺘﻢ ﺳﺮﻳﻊ ﺑﺮاي اﻳﻦ ﻛﺎر اراﺋﻪ دﻫﻴﺪ) .ﻓﺮض ﻛﻨﻴﺪ ﻫﺮ ﻋﺪد از kﻛﻤﺘﺮ اﺳﺖ .ﻣﺮﺗﺒﻪ ي اﻟﮕﻮرﻳﺘﻢ ﺑﻪ kواﺑﺴﺘﻪ ﺧﻮاﻫﺪ ﺑﻮد( -3دﻧﺒﺎﻟﻪ ي دو ﺗُﻨﻪ ؟!!! ☺ ﻣﻲ ﺧﻮاﻫﻴﻢ ﺑﺰرﮔﺘﺮﻳﻦ زﻳﺮدﻧﺒﺎﻟﻪ ي دو ﺗُﻨﻪ ي ﻳﻚ دﻧﺒﺎﻟﻪي nﺗﺎﻳﻲ از اﻋﺪاد را ﺑﻴﺎﺑﻴﻢ .زﻳﺮ دﻧﺒﺎﻟﻪ ي دوﺗﻨﻪ دﻧﺒﺎﻟﻪ اي اﺳﺖ ﻛﻪ اﺑﺘﺪا ﺻﻌﻮدي و ﺑﻌﺪ ﻧﺰوﻟﻲ ﺑﺎﺷﺪ .ﻣﺜﻼ دﻧﺒﺎﻟﻪ ي 2 3 8 4 1ﻳﻚ دﻧﺒﺎﻟﻪ ي دو ﺗﻨﻪ اﺳﺖ .ﻳﻚ اﻟﮕﻮرﻳﺘﻢ از )) o(nlog(nﺑﺮاي اﻳﻦ ﻛﺎر اراﺋﻪ دﻫﻴﺪ. ٢
© Copyright 2025 Paperzz