有哪位大佬帮忙看下怎么优化 Thanks♪(・ω・)ノ

FJ-S00552 2022-11-19 7:18:52 2022-11-19 7:19:11

#include<bits/stdc++.h> using namespace std; int a[100005],n,m,x,y; void ds(int a[100005]){ int ans = 2147483647; for (int i = 1; i <= n; i++) { for (int j = i + 1; j <= n; j++) { if (a[i] == a[j]) ans = min(ans, j - i); } } cout << ans << endl; } int main() { freopen("ds.in","r",stdin); freopen("ds.out","w",stdout); cin>>n>>m; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=m;i++){ cin>>x>>y; for(int i=1;i<=n;i++){ if(a[i]==x)a[i]=y; } ds(a); } return 0; }

共 2 条回复

FJ-S00172

启发式合并(猜(逃

FJ-S00172
#include<bits/stdc++.h>
using namespace std;
int a[100005],n,m,x,y;
void ds(int a[100005])
{
	int ans=2147483647;
	for (int i=1;i<=n;i++)
		for(int j=i+1;j<=n;j++)
			if(a[i]==a[j])
				ans=min(ans,j-i);
		cout<<ans<<endl;
}
int main()
{
	freopen("ds.in","r",stdin);
	freopen("ds.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	for(int i=1;i<=m;i++)
	{
		cin>>x>>y;
		for(int i=1;i<=n;i++)
			if(a[i]==x)
				a[i]=y;
		ds(a);
	}
	return 0;
}