今天实现了一下,发现遍历找左括号没有必要,但是需要记录result_array的值,因为在排序时不断改变原本数组的值,所以在最后输出,需要一个初始的数组。
int main()
{
char a[8]={‘(‘,‘(‘,‘(‘,‘)‘,‘(‘,‘)‘,‘)‘,‘)‘};
int remark_array[8]={0};
for(int i=0;i<8;i++) remark_array[i]=i+1;
int sum_left;
int result_array[4][2];
int p=0;
int sort_array[4]={0};
int right_now_location;
int left_location;
for(int j=0;j<8;j++)
{
if(a[j]==‘)‘)
{
right_now_location=j;
left_location=j-1;
while(remark_array[left_location]<0)
{
left_location--;
}
result_array[p][0]=left_location+1;
result_array[p][1]=right_now_location+1;
p++;
remark_array[left_location]=-1;
remark_array[right_now_location]=-1;
}
}
int mid_array[4][2];
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
mid_array[i][j]=result_array[i][j];
int min_num=0;
int min;
for(int i=0;i<p;i++)
{
int min=result_array[0][0];
min_num=0;
for(int j=1;j<p;j++)
{
if(result_array[j][0]<min)
{
min=result_array[j][0];
min_num=j;
}
}
sort_array[i]=min_num;
result_array[min_num][0]=100001;
}
for(int i=0;i<4;i++)
{
int n=sort_array[i];
printf("%d %d\n",mid_array[n][0],mid_array[n][1]);
}
}
原文:https://www.cnblogs.com/tzp-empty-hya/p/14170956.html