对于算法竞赛培训(不是家庭作业),我们在过去一年中得到了这个问题.将其发布到此站点,因为其他站点需要登录.
这是问题所在:http: //pastehtml.com/view/c5nhqhdcw.html
图像不起作用所以在这里发布: 
它必须在不到一秒的时间内运行,我只能想到最慢的方法,这就是我尝试过的:
with open('islandin.txt') as fin:
num_houses, length = map(int, fin.readline().split())
tot_length = length * 4 # side length of square
houses = [map(int, line.split()) for line in fin] # inhabited houses read into list from text file
def cost(house_no):
money = 0
for h, p in houses:
if h == house_no: # Skip this house since you don't count the one you build on
continue
d = abs(h - house_no)
shortest_dist = min(d, tot_length …Run Code Online (Sandbox Code Playgroud) 只是说我有一个清单
a = (3, 2, 9, 4)
Run Code Online (Sandbox Code Playgroud)
我想在每个数字中加一个并存储结果,(我之后不需要操纵结果),我的第一个想法就是:
[x + 1 for x in a]
Run Code Online (Sandbox Code Playgroud)
但是关于:
tuple(x + 1 for x in a)
Run Code Online (Sandbox Code Playgroud)
元组意味着更快吧?如果我不需要在此代码更高效后更改结果?它是如何工作的,tuple构造函数是否必须从生成器表达式中创建一个列表以提前知道大小?提前感谢您的任何解释.
#include <iostream>
#include <string>
int main() {
char s2;
s2 = '1' - '0';
std::cout << s2;
std::cout << std::endl;
std::cout << '1' - '0';
std::cin >> s2;
}
Run Code Online (Sandbox Code Playgroud)
产生的输出是:
?
1
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么两条线不同?我期待并希望两个结果都是1.根据我的理解,它们应该是相同的,但这显然是错误的,有人可以向我解释一下吗?谢谢
我怎么能得到这个
nums = [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8)]
Run Code Online (Sandbox Code Playgroud)
这个?每个元组的第二项是下一元组的第一项.
[0, 1, 2, 3, 4, 5, 6, 7, 8]
Run Code Online (Sandbox Code Playgroud)
我做了:
>>> zip(*nums)[0]
(0, 1, 2, 3, 4, 5, 6, 7)
Run Code Online (Sandbox Code Playgroud)
但它给了我除了最后一个元素之外的所有东西然后我不得不使用一些不好的代码来得到正确的结果,所以我正在寻找一个优雅的解决方案.