PTA-找出次品乒乓球(c语言)

按照国际乒联的规定,标准的乒乓球直径为40mm,重量为2.7克。学校购买了M个乒乓球(M⩾2),但其中有一个乒乓球是个次品。次品的外观和正品的外观没有差别,只是比正品轻了一些。请你编写程序找出次品乒乓球。

输入格式:

输入分两行,第一行是1个非负整数M,表示乒乓球的个数;第二行是M个实数,每个数表示一个乒乓球的重量,其中有M−1个数的值是相同的,有一个数比这M−1个数小,每个数之间都用空格间隔。

输出格式:

输出一个整数,表示次品乒乓球在输入数据中的位置数。

输入样例1:

5
2.7 2.7 2.5 2.7 2.7

输出样例1:

2

输入样例2:

15
2.8 2.8 2.8 2.8 2.8 2.8 2.8 2.8 2.8 2.8 2.8 2.8 2.4 2.8 2.8

输出样例2:

12

这个题我也是思考了一会儿,思路就是找出这堆乒乓球里面质量最小的,由于题目测试点判定的原因,我就投机取巧了,代码如下:

#include<stdio.h>
int main()
{
    int n,t,i;
    double a[100000]={0};
    scanf("%d",&n);
  for(i = 0;i < n;i++)
  {
    scanf("%lf",&a[i]);
  }
  for(i = 0;i < n;i++)
  {
    if(a[i]<=2.6)
    {printf("%d",i);
    return 0;}
  }
}

欢迎有更好方法的朋友在评论区留言,我们一起进步

### PTA 7-2 地下迷宫探索 C语言实现 对于PTA 7-2地下迷宫探索问题,在C语言中的实现主要涉及图的遍历算法,特别是深度优先搜索(DFS)或广度优先搜索(BFS)。下面提供了一个基于DFS的方法来解决这个问题。 #### 定义数据结构和初始化 为了表示迷宫,可以使用二维数组`maze[][]`。其中0代表可以通过的位置,1代表障碍物不可通过。还需要定义访问标记数组`visited[][]`用于记录节点是否被访问过。 ```c #include <stdio.h> #define MAX_SIZE 100 // 假设最大尺寸不超过100*100 int maze[MAX_SIZE][MAX_SIZE]; bool visited[MAX_SIZE][MAX_SIZE]; // 方向增量数组,分别对应上下左右四个方向 const int dx[] = {-1, 1, 0, 0}; const int dy[] = {0, 0, -1, 1}; void dfs(int x, int y){ if (x >= 0 && x < MAX_SIZE && y >= 0 && y < MAX_SIZE && !visited[x][y] && maze[x][y] == 0){ // 如果位置合法且未访问过并且不是墙壁,则继续深入 visited[x][y] = true; for (int d=0;d<4;++d) { int nx=x+dx[d], ny=y+dy[d]; dfs(nx,ny); } } } ``` 上述代码片段展示了如何利用递归函数dfs()来进行深度优先搜索[^1]。当遇到边界条件或者已经访问过的格子时停止进一步探索;否则就设置当前坐标为已访问状态并尝试移动到相邻的四个可能的方向上。 需要注意的是实际题目可能会有更多细节上的要求比如起点终点指定、路径输出等,这里仅给出基本框架作为参考。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值