1032. Sharing

这道题也折磨了好久, 崩溃T_T一开始用的静态链表,二重循环把word1串起来,同样方法串word2,遇到串过的地方就找到了。最后一组大数据超时了。第二次用的链表,最后一组居然内!存!超!过!了!!最后以空间换的时间,反正地址最多十
#include <stdio.h>

typedef struct WordNode {
	char data;
	int NextA;
}WordNode;
WordNode Word[100000];

int main()
{
	int beginAdd1, beginAdd2, N, i, Add, len1 = 0, len2 = 0;
	scanf("%d %d %d", &beginAdd1, &beginAdd2, &N);
	while (N--) {
		scanf("%d ", &Add);
		scanf("%c %d", &Word[Add].data, &Word[Add].NextA);
	}

	Add = beginAdd1;
	while (Add != -1) {
		Add = Word[Add].NextA;
		len1++;
	}
	Add = beginAdd2;
	while (Add != -1) {
		Add = Word[Add].NextA;
		len2++;
	}

	if (len1 > len2) 
		while (len1 != len2) {
			beginAdd1 = Word[beginAdd1].NextA;
			len1--;
		}
	else 
		while (len1 != len2) {
			beginAdd2 = Word[beginAdd2].NextA;
			len2--;
		}


	while (beginAdd1 != beginAdd2) {
		beginAdd1 = Word[beginAdd1].NextA;
		beginAdd2 = Word[beginAdd2].NextA;
	}
	if (beginAdd1 != -1)
		printf("%05d",beginAdd1);
	else printf("-1");
	return 0;
}

万个。

有一个点要注意,输入ADD时%d必须要加空格,不然会被当作char类型读入!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值