返回信息流我的思路感觉挺有逻辑的为什么就是不对呢,只有6/10,也找不到其他特殊情况了,各位大佬可以帮忙看看我的问题出在哪了呢,最好可以直接把我没考虑进去的特殊情况直接指出来[ema12]じゃ、お願いします
```c
#include<stdio.h>
int l1,l2,s1[502],s2[502],dp[502][502],ans[502],max,max1,id,id_i,id_j,flag=1;
void f(int x,int y){
if(x==0||y==0||!flag) return;
if(s1[x]==s2[y]&&dp[x][y]==max1){
ans[id++]=s1[x];
max1--;
if(id==max){
flag=0;//一旦找到一个可行答案就关闭开关
}
f(x-1,y-1);//向斜上方继续寻找
}
else if(s1[x]!=s2[y]&&dp[x][y]==max1){
if(flag)f(x-1,y);//向上方寻找
}
else {
if(flag)f(x,y-1);//在同一行向低下标元素中寻找
}
}
int main(){
scanf("%d",&l1);
for(int i=1;i<=l1;i++)scanf("%d",&s1[i]);
scanf("%d",&l2);
for(int i=1;i<=l2;i++)scanf("%d",&s2[i]);
for(int i=1;i<=l1;i++){//i-s1,j-s2,以s2[j]结尾的序列
int maxn=0;
for(int j=1;j<=l2;j++){
dp[i][j]=dp[i-1][j];
if(s1[i]==s2[j])dp[i][j]=maxn+1;
else if(s1[i]>s2[j]&&maxn<dp[i][j])maxn=dp[i][j];
if(dp[i][j]>max){
max=dp[i][j];
id_j=j;
id_i=i;//记得dp中最大值第一次出现的位置
}
}
}
max1=max;
f(id_i,id_j);
printf("%d\n",id);
for(int i=id-1;i>=0;i--){
printf("%d ",ans[i]);
}
return 0;
}
```
这是一条镜像帖。来源:北邮人论坛 / cpp / #101673同步于 2022/2/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
(大一)遇到自己解决不了的思路逻辑问题了,各位大佬救救孩子
W2w
2022/2/8镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
要不然你直接把代码发上来,使用论坛的Markdown功能进行代码高亮,就像这样
[ md ]
```c
#include <stdio.h>
int main()
{
return 0;
}
```
[ /md ]
```c
#include <stdio.h>
int main()
{
return 0;
}
```
好的好的
【 在 plazum 的大作中提到: 】
: 要不然你直接把代码发上来,使用论坛的Markdown功能进行代码高亮,就像这样
: [ md ]
: ```c
: ............
你在追加内容的时候不要追加到“--”后面,不然用手机版论坛网页看不到
还有,你的代码要用[ md ]```和```[ /md ]包围起来,就像我上面发的那样(但是[]里面不用加空格,我加了空格是为了防止它被解析)(在```后面可以写上语言以便使用正确的代码高亮,比如c)
【 在 W2w 的大作中提到: 】
: 好的好的
好的好的我还不熟练我重新改一下
【 在 plazum 的大作中提到: 】
: 你在追加内容的时候不要追加到“--”后面,不然用手机版论坛网页看不到
: 还有,你的代码要用[ md ]```和```[ /md ]包围起来,就像我上面发的那样(但是[]里面不用加空格,我加了空格是为了防止它被解析)(在```后面可以写上语言以便使用正确的代码高亮,比如c)
仅供参考, https://www.51nod.com/Challenge/ProblemSubmitDetail.html#judgeId=1304255
谢谢了!,不过这个题我已经写过了,基础的dp思路我差不多已经熟练了,我上面这个题我觉得也不难,但是就是不知道为什么ac不了
【 在 fasdf133 的大作中提到: 】
: 仅供参考, https://www.51nod.com/Challenge/ProblemSubmitDetail.html#judgeId=1304255
对对对!每个平台的标准有时不一样也很搞人心态
【 在 Wizmann 的大作中提到: 】
: 我用DFS接近O(n^3)的卡Bug做法能过百练的OJ
: 用O(n^2)的正解过不了。
: ............