用户:
进阶的柯南查看:19 回复:7 评论:19 创建时间:2024-08-17T10:47:07
题目描述 将n张卡片摆成一排,每张卡片上都有一个数字,需要从这排卡片中找出一组卡片,这组卡片的数字序列为公差为k的等差数列,(必须按照顺序找卡片,组成的数字序列也需要依照卡片的摆放顺序)。要求找出一组数量最多的卡片,请问满足条件的卡片组合最多为多少张? 输入格式 共两行,第一行两个数n和k。 第二行为n个用空格隔开的整数,表示每张卡片上的数字。 输出格式 一行,为所有满足条件的卡片组合中卡片最多的数量 样例输入 61 124357 样例输出 3 提示 30%的数据,n≤10;80%的数据,n≤5000,|k|≤500;100%的数据,n≤100000,|k|≤1000,每张卡片上数字绝对值小于等于100000。 样例解释 对于样例一来说,能组合为公差为1的卡片数值为: 1、12 2、123 3、23 4、45 其中数值为123的卡片组合中卡片数量最多,为3张卡片。 PS:可以把代码发在评论区给我测评 其他PS与上期相同,上期指路喵o.cn/wiki/forum/705456
我屮艸芔茻,上次我WA,这次得仁政了
#include<bits/stdc++.h>
using namespace std;
int n,k,Max=0,a[100010],b[100010];
int main(){
scanf("%d%d",&n,&k);
for(int i=1; i<=n; i++)
scanf("%d",&a[i]);
for(int i=1; i<=n; i++){
b[a[i]]=1;
b[a[i]]=max(b[a[i]],b[a[i]-k]+1);
Max=max(Max,b[a[i]]);
}
printf("%d\n",Max);
return 0;
}点赞0
评论
题目描述
将n张卡片摆成一排,每张卡片上都有一个数字,需要从这排卡片中找出一组卡片,这组卡片的数字序列为公差为k的等差数列,(必须按照顺序找卡片,组成的数字序列也需要依照卡片的摆放顺序)。要求找出一组数量最多的卡片,请问满足条件的卡片组合最多为多少张?
输入格式
共两行,第一行两个数n和k。 第二行为n个用空格隔开的整数,表示每张卡片上的数字。
输出格式
一行,为所有满足条件的卡片组合中卡片最多的数量
样例输入
6 1回车
1 2 4 3 5 7
样例输出
3点赞0
评论
#include<bits/stdc++.h>
using namespace std;
int n,k,Max=0,a[100010],b[100010];
int main(){
scanf("%d%d",&n,&k);
for(int i=1; i<=n; i++)
scanf("%d",&a[i]);
for(int i=1; i<=n; i++) b[a[i]]=1
for(int i=1; i<=n; i++){
b[a[i]]=max(b[a[i]],b[a[i]-k]+1);
Max=max(Max,b[a[i]]);
}
printf("%d\n",Max);
return 0;
}点赞0
评论
疯了
#include<bits/stdc++.h>
using namespace std;
int n,k,Max=0,a[100010],b[100010];
int main(){
scanf("%d%d",&n,&k);
for(int i=1; i<=n; i++)
scanf("%d",&a[i]);
for(int i=1; i<=n; i++) b[a[i]]=1;
for(int i=1; i<=n; i++){
b[a[i]]=max(b[a[i]],b[a[i]-k]+1);
Max=max(Max,b[a[i]]);
}
printf("%d\n",Max);
return 0;
}点赞0
评论
#include <iostream>
using namespace std;
int n = 0;
int k = 1;
int nums[5001];
int ans = 1;
int Max = 0;
int Hash[5001];
int f(int nowNumS) {
int nowNum = nums[nowNumS];
for (int x = 0; x <= n; x++) {
int nextNum = nums[x];
if (nextNum - nowNum == k) {
if(!Hash[x])
{
Hash[x] = f(x);
}
return 1 + Hash[x];
}
}
return 1;
}
int main() {
cin >> n >> k;
for (int x = 0; x < n; x++) {
cin >> nums[x];
}
for (int x = 0; x < n; x++) {
Max = max(f(x),Max);
}
cout << Max;
return 0;
}点赞0
评论