2
나는 C를 배우려고 노력하고 있는데, 이렇게하는 좋은 방법은 파이썬에서했던 프로그래밍 문제를 수정하는 것이라고 생각했습니다. 나는 현재 this에서 일하고 있습니다. C에서 파이썬 문자열 동작 복제
은 내 솔루션 :이 기능에 따라 새로운 문자열이 10 + "결과"10 "의 결과를" "즉, 전화를 작성 곳 재귀 함수 호출 할 때def main():
nums = ["10", "9", "8", "7", "6", "5", "4", "3", "2", "1"]
ops = ["+", "-", "*", "/", ""]
recursive(nums, ops, "", 0)
def recursive(nums, ops, current_str, num_ind):
if num_ind == len(nums)-1:
# print current_str + nums[num_ind]
if eval(current_str + nums[num_ind]) == 2013:
print current_str + nums[num_ind]
return 0
else:
current_str = current_str + nums[num_ind]
num_ind += 1
for i in range(len(ops)):
recursive(nums, ops, current_str+ops[i], num_ind)
파이썬은 10", "어떤 마법을 수행 모든 순열에 대해 "-", "10 *", "10 /", "10"등등. 당신이 인쇄 문을 주석 처리하면 예 :
10+9+8+7+6+5+4+3+2+1
10+9+8+7+6+5+4+3+2-1
10+9+8+7+6+5+4+3+2*1
10+9+8+7+6+5+4+3+2/1
10+9+8+7+6+5+4+3+21
C에서 메모리 할당과 문자열로 얼마나 손을 당신에 보면, "분기"행동의 종류를 할도 가능하다 C에서 파이썬 전시 ?
는 UPDATE :
은 당신이 할 수 물론
int recursive(char** nums, char** ops, char* current_str, int num_ind){
int i, ret;
char new_str[100];
num_ind++;
if(num_ind == 9){
//printf("%s\n", strcat(current_str,nums[num_ind]));
ret = eval(strcat(current_str, nums[num_ind]));
if(ret == 2013){
printf("%s\n", current_str);
}
return 0;
}
for(i=0; i<5; i++){
strcpy(new_str, current_str);
strcat(new_str, nums[num_ind]);
recursive(nums, ops, strcat(new_str, ops[i]), num_ind);
}
}
파이썬은 C로 구현됩니다. 따라서 가능합니다 :-) 새로운 문자열 각각에 대해 메모리를 할당하고 수동으로 할당 된 메모리에 문자열 내용을 채워야합니다. – Cameron
'eval'은 외부 라이브러리 없이는 구현하기가 상당히 어려울 것입니다 ... – nneonneo
Nitpick ... CPython은 C로 구현됩니다. – wim