问题标题: 酷町堂:今天的每日一题又是4分题!!!

0
0
已解决
董宇昊
董宇昊
初级启示者
初级启示者

今天的每日一题又是4分题!!!

我已经连续几次抽到4分题了!!!

哪位大佬能给点思路呀!!~~

——————————————我是分割线——————————————————

1556   海拔高度之谜

题目描述 Description

小王奉命去测绘A地附近的地形,要求对附近地形的海拔高度进行测量,一共要测量n个数据,经过测量和计算,小王发现两个连续数值之间差的绝对值包括了[1,n-1]之间的所有整数,如1 4 2 3的差的绝对值分别为:3,2,1。现在小王去B地继续测量任务,请问他在这里测量的数据能满足这个原理吗?

输入描述 Input Description

以一个整数n(1<=n<=1000)开始,接下来n个空格隔开的在[-100,100]之间的整数

输出描述 Output Description

输出一行若该数组符合规律则输出"Yes",否则输出"No"

样例输入 Sample Input

样例一: 4 1 4 2 3 样例二: 5 1 4 2 -1 6

样例输出 Sample Output

样例一: Yes 样例二: No

董宇昊在2020-04-25 14:53:46追加了内容

#include <bits/stdc++.h>
using namespace std;
int dyh(int n){
    int a[1001],sum[1001];
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=n;i++){
        if(a[i]>a[i+1])
        sum[i]=a[i]-a[i+1];
        else
        sum[i]=a[i+1]-a[i];
    }
    for(int i=1;i<=n;i++){
        if(sum[i]-sum[i+1]!=1){
            cout<<"No"; 
            return 0;
        }
    }
    cout<<"Yes";
}
int main(){
    int n;
    cin>>n;
    dyh(n);
    return 0;

我怎么错了??


0
已采纳
高子健
高子健
新手天翼
新手天翼

你学过桶排序吗

这题要用桶排序

1556 海拔高度之谜

 

Accepted:100分

 

 

高子健的测评结果:

 

测试点#1测评结果 : Accepted时间 : 0ms
测试点#2测评结果 : Accepted时间 : 0ms
测试点#3测评结果 : Accepted时间 : 0ms
测试点#4测评结果 : Accepted时间 : 0ms
测试点#5测评结果 : Accepted时间 : 0ms
测试点#6测评结果 : Accepted时间 : 0ms
测试点#7测评结果 : Accepted时间 : 0ms
测试点#8测评结果 : Accepted时间 : 0ms
测试点#9测评结果 : Accepted时间 : 0ms
测试点#10测评结果 : Accepted时间 : 0ms

0
黄子扬
黄子扬
初级天翼
初级天翼

每个人是随机的,还有说明一下四分题都是送经验

这题类似“邻居的神奇差值”

将两两个数求差,存入一个数组

排序这个存差的数组,判断相邻两个数的差是不是1

如果不是1就输出No结束

否则在最终输出Yes

黄子扬在2020-04-25 10:23:21追加了内容

感谢您给我找到了一道原题,1200经验我收下了

0
曹砚青
曹砚青
中级光能
中级光能

本人的60分代码:

#include<iostream>

#include<cmath>

using namespace std;

int a[1010],n;

void quicksort(int left,int right)

{

if(left>right)

return;

int t,temp=a[left],i=left,j=right;

while(i!=j)

{

while(a[j]>=temp&&i<j)

j--;

while(a[i]<=temp&&i<j)

i++;

if(i<j)

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

}

a[left]=a[i];

a[i]=temp;

quicksort(left,i-1);

quicksort(i+1,right);

return;

}

int main()

{

cin>>n;

for(int i=0;i<n;i++)

cin>>a[i];

quicksort(0,n-1);

for(int i=0;i<n-1;i++)

{

if(abs((a[i+1]-a[i]))!=1)

{

cout<<"No";

return 0;

}

}

cout<<"Yes";

return 0;

}

0
曹砚青
曹砚青
中级光能
中级光能

这题类似1059,你只要会桶排序就会了

0
董宇昊
董宇昊
初级启示者
初级启示者

#include <bits/stdc++.h>
using namespace std;
int dyh(int n){
    int a[1001],sum[1001];
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=n;i++){
        if(a[i]>a[i+1])
        sum[i]=a[i]-a[i+1];
        else
        sum[i]=a[i+1]-a[i];
    }
    for(int i=1;i<=n;i++){
        if(sum[i]-sum[i+1]!=1){
            cout<<"No"; 
            return 0;
        }
    }
    cout<<"Yes";
}
int main(){
    int n;
    cin>>n;
    dyh(n);
    return 0;

董宇昊在2020-04-25 14:53:20追加了内容

我怎么错了??

0
我要回答