救命!说超时间了,有没有人看看我这个思路要怎么改。
查看原帖
救命!说超时间了,有没有人看看我这个思路要怎么改。
1316132
Fool30楼主2024/4/4 12:11
#include<iostream>
using namespace std;
//用线性表。 
typedef struct list{
	int *s;
	int maxsize;
	int size;
}l;
//顺序表的初始化。 
void init(l &l){
	l.maxsize=100000;
	l.s=new int[l.maxsize];
	if(l.s==NULL){
		cout<<"false i"<<endl;
		exit(1);
	}
	l.size=0;
}
//得出数据最高位的数据。 
int pd(int n){
	int g;
	while(n>=10){
		n=n/10;
	}
	g=n;
	return g;
}
//删除表中的元素。 
void del(l &l,int n){
	if(n>l.size){
		cout<<"false d"<<endl;
		exit(1);
	}else if(n==l.size){
		l.s[n]=0;
		l.size--;
	}else{
		for(int i=n;i<l.size;i++){
			l.s[i]=l.s[i+1];
		}
		l.size--;
	}
}
//表的输入。 
void inser(l &l,int n){
	//超出容量了。 
	if(n>l.maxsize){
		cout<<"false inser"<<endl;
		exit(1);
	}
	//正常输入。 
	for(int i=1;i<=n;i++){
		cin>>l.s[i];
	}
	l.size=n;
}
int main(){
	l l;
	init(l);
	int n;
	cin>>n;
	inser(l,n);
	int w=0;
	for(int i=1;i<l.size;i++){
		//判断前面数的个位数字等不等于后面数字的最高位。 
		if(l.s[i]%10!=pd(l.s[i+1])){
			//如果等于,删除之后,参数加一。 
			w++;
			del(l,i+1);
			i=i-1;
		}else{
			continue;
		}
	}
	cout<<w<<endl;
	return 0;
}
2024/4/4 12:11
加载中...