捆绑销售问题

最近超市要准备促销活动,为增加销量,超市决定将两种商品进行捆绑销售。现在需要你在已有的购物清单中找出来哪两种商品同时出现的次数最多

第一行输入一个数N(1<=N<=100),表示现有购物清单的数量;随后的N行分别输入每个客户购买的商品(商品数固定为5),商品用大写字母表示。
输出需要捆绑销售的两个商品。(按照ASCII码的升序进行排列)

最基础的写法(十分麻烦)

int main() {
	int abc[10][26][26] = { 0 };
	int n;
	cin >> n;
	char s[10][5];
	for (int i = 0; i < n; i++) {
		cin >> s[i];
	}
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < 5; j++) {
			for (int h = 0; h < 26; h++) {
				abc[i][(int)(s[i][j] - 'A')][h]++;
			}
		}
		for (int j = 0; j < 5; j++) {
			for (int h = 0; h < 26; h++) {
				abc[i][h][(int)(s[i][j] - 'A')]++;
			}
		}
	}
	int z[26][26] = { 0 };
		for (int i = 0; i < 26; i++) {
			for (int j = 0; j < 26; j++) {
				for (int h = 0; h < n; h++)
				{
					z[i][j] += abc[h][i][j];
				}
			}
		}
		for (int i = 0; i < 26; i++) {
			z[i][i] = 0;
		}
		int maxi=0, maxj=0;
		for (int i = 0; i < 26; i++) {
			for (int j = 0; j < 26; j++) {
				if (z[i][j] > z[maxi][maxj]) {
					maxi = i; maxj = j;
				}
			}
		}int temp;
			if (maxi > maxj) {
				temp = maxi;
				maxi = maxj;
				maxj = temp;
			}
			cout << (char)(maxi + 'A') <<(char)( maxj + 'A');
}

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值