问题标题: 酷町堂:5088如果让我对了,采纳前酷町豆加到100!

0
0
已解决
董子墨
董子墨
中级天翼
中级天翼

新网站网址

旧网站网址

WA0 怎么错了?

#include<iostream>
using namespace std;
string a,b;
int len[1005];
int f[1005][1005],t;
int main(){
	getline(cin,a);
	getline(cin,b);
	a=" "+a;
	b=" "+b;
	swap(a,b);
	int m=a.length(),n=b.length();
	for(int i=1;i<=m;i++)
		for(int j=1;j<=n;j++)
			if(a[i]==b[j]){
				f[i][j]=f[i-1][j-1]+1;
				len[f[i][j]]=i;
			}
			else
				f[i][j]=max(f[i-1][j],f[i][j-1]);
	for(int i=1;i<=f[m][n];i++)
		cout<<a[len[i]];
	return 0;
}

不会的严禁蹭帖!!!董宇昊、沈峻宇请注意!!!

严禁发整段代码!!!严禁违反版规!!!

 

董子墨在2020-06-11 19:35:27追加了内容

@黄子澄 @王光裕 @所有上过最长公共子串的酷町堂学员

 

 

董子墨在2020-06-12 17:20:25追加了内容

新错误(WA80)代码:

#include<iostream>
using namespace std;
string a,b;
int f[1005][1005],g[1005][1005];
void print(int x,int y){
	if(x==0||y==0)
		return ;
	if(g[x][y]==1){
		print(x-1,y-1);
		cout<<b[y];
	}
	else if(g[x][y]==2)
		print(x-1,y);
	else
		print(x,y-1);
}
int main(){
	getline(cin,a);
	getline(cin,b);
	int m=a.length(),n=b.length();
	a=" "+a;
	b=" "+b;
	for(int i=1;i<=m;i++)
		for(int j=1;j<=n;j++)
			if(a[i]==b[j]){
				f[i][j]=f[i-1][j-1]+1;
				g[i][j]=1;
			}
			else if(f[i-1][j]>=f[i][j-1]){
				f[i][j]=f[i-1][j];
				g[i][j]=2;
			}
			else{
				f[i][j]=f[i][j-1];
				g[i][j]=3;
			}
	print(m,n);
	return 0;
}

哪错了?

董子墨在2020-06-12 17:40:36追加了内容

求大佬解答

董子墨在2020-06-13 10:03:28追加了内容

董子墨在2020-06-16 18:13:30追加了内容

顶顶顶!

我就不信没有人会

董子墨在2020-06-16 18:17:05追加了内容

如果2020-6-23 23:59:59 及之前还没有能让我AC的答案,那我就自动采纳能让我做到最高分的答案。

董子墨在2020-06-17 17:29:28追加了内容

更改一下时间:如果在2020-7-10 23:59:59 前还没能让我AC的答案,那我就采纳能让我做到最高分的答案

董子墨在2020-06-17 17:32:14追加了内容

也可以加我QQ告诉我。QQ:485986741

董子墨在2020-06-25 08:40:12追加了内容

董子墨在2020-07-02 17:06:37追加了内容


0
已采纳
臧鸿志
臧鸿志
初级天翼
初级天翼

回看4140微课,得记录具体路径,用递归函数或者栈实现输出

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

大佬,明明这么简单

如果价钱超过酷町猫带的钱

因为他的钱不够了

价钱就减去5  相对  次数也要减1,然后退出循环

  • sum-=5;
  • cnt-=1;

否则一直加5 相对 次数也要自增

  • sum+=5;
  • cnt++;

最后输出就可以了

提示:sum的初始值

董宇昊在2020-06-16 21:08:41追加了内容

好像说错题了

呃呃,我说成5008了

我的时间呀

大家别举报了!谢谢~

0
我要回答