返回值3221225620求助
  • 板块学术版
  • 楼主hutao_chu
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/10/13 22:10
  • 上次更新2023/11/2 14:01:39
查看原帖
返回值3221225620求助
1046435
hutao_chu楼主2023/10/13 22:10

题面是这样的:有n个从小到大依次排列的数列,每个数列有m个数,问插入多少个数可以使这个数列成为一个等差数列,如果不行输出-1.

以下为代码:

#include<iostream>
using namespace std;
int main(){
    int n,m[10000],a[10000],y[10000],ans[10000],ansf;
    cin>>n;
    int x[100][100];
    for(int i=1;i<=n;i++){
		cin>>m[i];
			for(int j=m[i];j<=m[i];j++){
			cin>>a[j];
			}
}	
	for(int i=1;i<=n;i++){
		for(int j=m[i];j<=m[i];j++){
		x[i][j]=m[i+1]-m[i];
		}
	
	}
	for(int i=1;i<=3;i++){
		for(int j=1;j<=3;j++){
			for(int l=1;l<=n;l++){
			if(x[i][j]/l==0&&x[i][j+1]/l==0&&x[i][j+2]/l==0){y[i]=l;}
		
	}
}
	for(int i=1;i<=n;i++){
		for(int j=m[i];j<=m[i];j++){
			if(x[i][j]==x[i][j+1]){
			cout<<"-1"<<endl;
		}
	else{
		for(int l=1;l<=n;l++){
			ans[l]=((m[l+1]-m[l])/y[l])-1;
			}
			for(int l=1;l<=n;l++){
				ansf=ans[l]+ansf;
			}
			cout<<ansf<<endl;
		}
}
}
}
  return 0;
}
2023/10/13 22:10
加载中...