求助大佬为啥是0分啊啊啊明明数据都对
  • 板块P1781 宇宙总统
  • 楼主capo
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/11/9 19:22
  • 上次更新2023/11/4 01:01:25
查看原帖
求助大佬为啥是0分啊啊啊明明数据都对
605171
capo楼主2021/11/9 19:22
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	int n, i, j, k, max, m, maxn[20] = { 1 };//元素代表第几个候选人
	int length;
	char **num;

	scanf("%d", &n);
	getchar();
	num = (char **)malloc(n * sizeof(char));
	for (int i = 0; i < n; i++)
		num[i] = (char *)malloc(sizeof(char) * 100);
	for (int i = 0; i < n; i++)
	{
		fflush(stdin);
		gets(num[i]);
	}
	//首先筛选位数最多的
	length = strlen(num[0]);
	for (i = 1, j = 0, k = 0; i < n; i++)
	{
		if (strlen(num[i]) > strlen(num[j]))
		{
			for (k = 0; k < i; k++)
				maxn[k] = 0;
			k = 0;
			j = i;
			maxn[k] = i + 1;
			length = strlen(num[i]);
		}
		if (strlen(num[i]) == strlen(num[j]))
			maxn[i] = i + 1;
	}
	//再筛选从左往右数字最大的
	for (i = 0, max = 0; i < length; i++)//比较第i列的数字
	{
		for (j = 0; maxn[j] == 0; j++)
			max = j + 1;
		for (j = max + 1; j < n; j++)//第j行
			if (maxn[j] == 0)continue;
			else
			{
				if (num[j][i] > num[max][i])
				{
					max = j;
					for (k = 0; k < j; k++)
						maxn[k] = 0;
				}
				if (num[j][i] < num[max][i])
					maxn[j] = 0;
			}
		for (j = 0, k = 0; j < n; j++)
			if (maxn[j] != 0)
			{
				k++;
				m = maxn[j];
			}
		if (k == 1)
			break;
	}
	printf("%d\n%s", m, num[m-1]);
	return 0;
}
2021/11/9 19:22
加载中...