56 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			56 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								id: 5900f4b41000cf542c50ffc7
							 | 
						|||
| 
								 | 
							
								challengeType: 5
							 | 
						|||
| 
								 | 
							
								title: 'Problem 328: Lowest-cost Search'
							 | 
						|||
| 
								 | 
							
								videoUrl: ''
							 | 
						|||
| 
								 | 
							
								localeTitle: 问题328:成本最低的搜索
							 | 
						|||
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## Description
							 | 
						|||
| 
								 | 
							
								<section id="description">我们试图通过提问来找到从整数集{1,2,...,n}中选择的隐藏数字。我们要求的每个数字(问题)的成本等于所要求的数字,我们得到三个可能的答案之一:“您的猜测低于隐藏的数字”,或“是的,就是它!”或“您的猜测是高于隐藏号码“。给定n的值,最优策略最小化了最坏情况下的总成本(即所有问题的总和)。例如<p>如果n = 3,我们能做的最好的就是问号码“2”。答案将立即引导我们找到隐藏号码(总费用= 2)。 </p><p>如果n = 8,我们可能决定使用“二分搜索”类型的策略:我们的第一个问题是“4”,如果隐藏数字高于4,我们将需要一个或两个额外的问题。让我们的第二个问题是“6”。如果隐藏数字仍高于6,我们将需要第三个问题以区分7和8.因此,我们的第三个问题将是“7”,这个最坏情况的总成本将是4 + 6 + 7 = 17。 </p><p>通过将“5”作为我们的第一个问题,我们可以大大改善n = 8的最坏情况成本。如果我们被告知隐藏的数字高于5,我们的第二个问题将是“7”,那么我们将确定隐藏的数字是什么(总成本为5 + 7 = 12)。如果我们被告知隐藏号码低于5,我们的第二个问题将是“3”,如果隐藏号码低于3,我们的第三个问题将是“1”,总成本为5 + 3 + 1 = 9。自12> 9以来,该策略的最坏情况成本为12.这比我们之前使用“二元搜索”策略所取得的成本更好;它也优于或等于任何其他策略。所以,事实上,我们刚刚描述了n = 8的最优策略。 </p><p>假设C(n)是通过n的最优策略实现的最坏情况成本,如上所述。因此,C(1)= 0,C(2)= 1,C(3)= 2,C(8)= 12.类似地,C(100)= 400,C(n)= 17575。 </p><p>找到C(n)。 </p></section>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## Instructions
							 | 
						|||
| 
								 | 
							
								<section id="instructions">
							 | 
						|||
| 
								 | 
							
								</section>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## Tests
							 | 
						|||
| 
								 | 
							
								<section id='tests'>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```yml
							 | 
						|||
| 
								 | 
							
								tests:
							 | 
						|||
| 
								 | 
							
								  - text: <code>euler328()</code>应返回260511850222。
							 | 
						|||
| 
								 | 
							
								    testString: 'assert.strictEqual(euler328(), 260511850222, "<code>euler328()</code> should return 260511850222.");'
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								</section>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## Challenge Seed
							 | 
						|||
| 
								 | 
							
								<section id='challengeSeed'>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								<div id='js-seed'>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```js
							 | 
						|||
| 
								 | 
							
								function euler328() {
							 | 
						|||
| 
								 | 
							
								  // Good luck!
							 | 
						|||
| 
								 | 
							
								  return true;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								euler328();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								</div>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								</section>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## Solution
							 | 
						|||
| 
								 | 
							
								<section id='solution'>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```js
							 | 
						|||
| 
								 | 
							
								// solution required
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								</section>
							 |