1090 Highest Price in Supply Chain 分数 25

该程序实现了一个计算树的最大深度和相同深度节点数量的算法。它读取树的节点信息,使用DFS进行遍历,并利用 pow 函数处理指数运算。最后输出最大深度及其对应的节点数。

题目链接

#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
const int N=1e5+10;
int n;
double P,R;
int p[N],f[N];
int dfs(int u){
    if(f[u]!=-1) return f[u];
    if(p[u]==-1) return f[u]=0;
    return f[u]=dfs(p[u])+1;
}
int main(){
    cin>>n>>P>>R;
    for(int i=0;i<n;i++) cin>>p[i];
    memset(f,-1,sizeof f);
    int depth=0,cnt=0;
    for(int i=0;i<n;i++){
        if(dfs(i)>depth){
            depth=dfs(i);
            cnt=1;
        }
        else if(dfs(i)==depth) cnt++;
    }
    printf("%.2lf %d\n",P*pow(1+R/100,depth),cnt);
    return 0;
}
以下是一个使用 C 语言实现的完整程序,用于从键盘输入 `n` 本书的名称和价格,查找并输出其中定价最高和最低的书籍信息。 ```c #include <stdio.h> #include <string.h> #define MAX_BOOKS 10 #define NAME_LEN 100 // 定义结构体表示一本书 struct Book { char name[NAME_LEN]; float price; }; int main() { int n; struct Book books[MAX_BOOKS]; // 输入书的数量 scanf("%d", &n); // 输入每本书的信息 for (int i = 0; i < n; i++) { getchar(); // 消除换行符的影响 fgets(books[i].name, NAME_LEN, stdin); // 去掉 fgets 读入的换行符 size_t len = strlen(books[i].name); if (books[i].name[len - 1] == '\n') { books[i].name[len - 1] = '\0'; } scanf("%f", &books[i].price); } // 初始化最大和最小价格的索引为第0本书 int maxIndex = 0, minIndex = 0; for (int i = 1; i < n; i++) { if (books[i].price > books[maxIndex].price) { maxIndex = i; } if (books[i].price < books[minIndex].price) { minIndex = i; } } // 输出结果 printf("highest price: %.1f, %s\n", books[maxIndex].price, books[maxIndex].name); printf("lowest price: %.1f, %s\n", books[minIndex].price, books[minIndex].name); return 0; } ``` ### 解释: - **结构体 `Book`**:用来存储每本书的名称(字符串)和价格(浮点数)。 - **数组 `books[MAX_BOOKS]`**:存放最多 10 本书的信息。 - **输入处理**: - 使用 `scanf("%d", &n)` 读入书本数量。 - 使用 `getchar()` 吸收回车符,避免影响后续 `fgets`。 - 使用 `fgets()` 安全地读取书名(可包含空格),并手动去除末尾的换行符。 - 使用 `scanf("%f", &price)` 读取价格。 - **查找最值**: - 遍历所有书籍,记录价格最高和最低的书籍下标。 - **输出格式**: - 使用 `%.1f` 确保价格保留一位小数,符合题目要求。 --- ### 示例运行: **输入:** ``` 3 Programming in C 21.5 Programming in VB 18.5 Programming in Delphi 25 ``` **输出:** ``` highest price: 25.0, Programming in Delphi lowest price: 18.5, Programming in VB ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值