编程是一项实用性很强的技能,它不仅可以帮助我们解决实际问题,还能提高逻辑思维能力和解决问题的能力。下面,我将为大家推荐一些实用的计算题,帮助你从基础开始,逐步提升编程技能。
一、基础算法题
1. 求和问题
题目描述: 输入两个整数,求它们的和。
示例代码(Python):
def sum_numbers(a, b):
return a + b
# 测试代码
result = sum_numbers(3, 5)
print("两个数的和是:", result)
2. 最大公约数(GCD)
题目描述: 输入两个整数,求它们的最大公约数。
示例代码(Python):
def gcd(a, b):
while b:
a, b = b, a % b
return a
# 测试代码
result = gcd(54, 24)
print("最大公约数是:", result)
二、数据结构题
1. 链表反转
题目描述: 输入一个单链表,将其反转。
示例代码(Python):
class ListNode:
def __init__(self, value=0, next=None):
self.value = value
self.next = next
def reverse_list(head):
prev = None
current = head
while current:
next_node = current.next
current.next = prev
prev = current
current = next_node
return prev
# 测试代码
# 构建链表:1 -> 2 -> 3 -> 4 -> 5
head = ListNode(1, ListNode(2, ListNode(3, ListNode(4, ListNode(5)))))
new_head = reverse_list(head)
# 打印反转后的链表
while new_head:
print(new_head.value, end=' -> ')
new_head = new_head.next
2. 二分查找
题目描述: 输入一个有序数组和一个目标值,判断目标值是否存在于数组中。
示例代码(Python):
def binary_search(arr, target):
low, high = 0, len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1
# 测试代码
arr = [1, 3, 5, 7, 9]
target = 5
result = binary_search(arr, target)
if result != -1:
print("目标值存在于数组中,索引为:", result)
else:
print("目标值不存在于数组中")
三、算法题
1. 快速排序
题目描述: 对一个整数数组进行快速排序。
示例代码(Python):
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
# 测试代码
arr = [3, 6, 8, 10, 1, 2, 1]
sorted_arr = quick_sort(arr)
print("快速排序后的数组:", sorted_arr)
2. 求最长公共子序列(LCS)
题目描述: 输入两个字符串,求它们的最长公共子序列。
示例代码(Python):
def lcs(str1, str2):
m, n = len(str1), len(str2)
dp = [[0] * (n + 1) for _ in range(m + 1)]
for i in range(1, m + 1):
for j in range(1, n + 1):
if str1[i - 1] == str2[j - 1]:
dp[i][j] = dp[i - 1][j - 1] + 1
else:
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])
return dp[m][n]
# 测试代码
str1 = "AGGTAB"
str2 = "GXTXAYB"
result = lcs(str1, str2)
print("最长公共子序列长度为:", result)
通过以上这些实用的计算题,相信你已经对编程有了更深入的了解。继续努力,不断提升自己的编程技能吧!
