问题求解与程序设计作业1

本文提供三个典型算法问题的解决方案:鸡兔同笼问题的计算、卖鞋问题的损失计算及整数拆分问题的求解。通过C++实现,帮助读者理解算法背后的逻辑。
1【鸡兔同笼】今有鸡、兔若干,它们共有a个头和b只脚,问鸡兔各多少?
[cpp]  view plain  copy
  1. #include<stdio.h>  
  2. int main(void)  
  3. {  
  4.     int cases;  
  5.     int nFeet;  
  6.     scanf("%d",&cases);  
  7.     while(cases){  
  8.         scanf("%d",&nFeet);  
  9.         if(nFeet%2 != 0)  
  10.             printf("0 0\n");  
  11.         else  
  12.             printf("%d %d\n",nFeet%4/2+nFeet/4,nFeet/2);  
  13.         cases--;  
  14.     }  
  15.     return 0;  
  16. }  

2【卖鞋问题】王师傅是卖鞋的,一双鞋进价m元卖n元,假节日打k折,顾客来买鞋给了张100元,王师傅没零钱,

于是找邻居换了100元。事后邻居发现钱是假的,王师傅又赔了邻居100元。请问王师傅一共亏了多少? (说明m和n均小于100)

[cpp]  view plain  copy
  1. #include<iostream>  
  2. using namespace std;  
  3. int main()  
  4. {  
  5.     int m ,n,k;  
  6.     cin>>m>>n>>k;  
  7.     cout<<"从数学的角度上亏了"<<(m-n*k/10.0 + 100)<<endl;  
  8.     return 0;  
  9. }  


3【整数拆分】输入正整数 k,找到所有的正整数 x ≥ y,使得 1/k =1/x + 1/y。

[cpp]  view plain  copy
  1. #include<iostream>  
  2. using namespace std;  
  3. int main()  
  4. {  
  5.     int k,x,y;  
  6.     cin>>k;  
  7.     for(y = 1;y <= 2*k;++y){  
  8.         for(x = y;x <= 2*k;x++){  
  9.             //注意需要两个判断条件,   
  10.             if((x*y%(x+y) == 0)&&(x*y/(x+y) == k)){  
  11.                 cout<<x<<" "<<y<<"\n";  
  12.             }  
  13.         }  
  14.     }  
  15.     return 0;  
  16. }  
### 关于程序设计问题求解作业9:链表的实现解决方案 针对程序设计问题求解课程中的作业9,该部分主要聚焦于链表的数据结构及其操作。链表是一种线性数据结构,其中元素不是连续存储在内存中,而是通过指针链接在一起。 #### 链表的基本概念 链表由节点组成,每个节点包含两部分:一部分用于保存实际数据;另一部分是一个指向下一个节点地址的引用(也称为指针)。这种特性使得向列表中间插入新项变得非常容易[^1]。 对于具体实现而言,在 Python 中可以通过类来模拟单项链表: ```python class Node: def __init__(self, data=None): self.data = data # 存储数据 self.next = None # 初始化下一节点为空 class LinkedList: def __init__(self): self.head = None # 表头初始化为None def append(self, new_data): # 添加新的结点至末尾 new_node = Node(new_data) if not self.head: self.head = new_node return last = self.head while last.next: last = last.next last.next = new_node ``` 上述代码展示了创建一个简单的单向链表并提供了一个方法 `append` 来追加新元素到链表末端。 为了更好地理解掌握链表的操作,建议深入研究更多类型的链表(如双向链表、循环链表),了解它们各自的优缺点,并尝试编写相应的增删查改函数。此外,还可以参考一些经典的算法题目来进行练习,比如反转链表、查找倒数第K个节点等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值