我是靠谱客的博主 甜美小松鼠,最近开发中收集的这篇文章主要介绍每周算法题(从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案,有1、2、3、4数字,组成无重复的三位数两个乒乓球队进行比赛,各出三人。甲队为a,b,c)每周算法题一、从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。二、有1、2、3、4数字,组成无重复的三位数两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

每周算法题

文章目录

  • 每周算法题
  • 一、从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。
  • 二、有1、2、3、4数字,组成无重复的三位数
  • 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。
  • 总结


一、从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。

根据题意

  • 红球的数从0-3不等
  • 白球的数从1-5不等(因为必须有白球)
  • 黑球的数从0-6不等
  • 只有当球的总数是8时,才是可行的方案

代码如下


void main()
{
int count = 0;
for (int red = 0; red <= 3; red++)
{
for (int white = 1; white <= 5; white++)
{
for (int black = 0; black <= 6; black++)
{
if (red+white+black==8)
{
printf("%d,%d,%dn", red, white, black);
}
count++;
}
}
}
printf("%d", count);
}

这里count是为了计算整个循环运行了多少次,这里count结果是140,这就是穷举法,也就是死算.
但它也是可以优化的


void main()
{
int count = 0;
for (int red = 0; red <= 3; red++)
{
for (int white = 1; white <= 5; white++)
{
int black = 8 - red - white;
if (red + white + black == 8)
{
printf("%d,%d,%dn", red, white, black);
}
count++;
}
}
printf("%d", count);
}

因为这里当红球和白球的数量固定后,黑球的数量也能够知道,所以不需要再来一个循环了
这次的count结果是20次,算是质的飞跃了

二、有1、2、3、4数字,组成无重复的三位数

根据题意

  • 就是3个循环,每个数都不能相同
void main()
{
int count = 0;
for (int num1 = 1; num1 <= 4; num1++)
{
for (int num2 = 1; num2 <= 4; num2++)
{
for (int num3 = 1; num3 <= 4; num3++)
{
if (num1!=num2&&num2!=num3&&num3!=num1)
{
printf("%d%d%dn", num1, num2, num3);
}
count++;
}
}
}
printf("%d", count);
}

这里当然也是可以优化的

void main()
{
int count = 0;
for (int num1 = 1; num1 <= 4; num1++)
{
for (int num2 = 1; num2 <= 4; num2++)
{
if (num1 != num2)
{
for (int num3 = 1; num3 <= 4; num3++)
{
if (num3!= num2 && num3 != num1)
{
printf("%d%d%dn", num1, num2, num3);
}
count++;
}
}
}
}
printf("%d", count);
}

如果先判断前两个位是否相等,再执行第三位的循环,就能省去不少无用功

两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。

原题:
两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。
己抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和 x,z比,请编程序找出三队赛手的名单。

这题其实同理,但需要注意的是一个常识问题.自己队里的人没办法比赛,所以要提前判断

void main()
{
for (char a = 'x'; a <= 'z'; a++)
{
for (char b = 'x'; b <= 'z'; b++)
{
if (a!=b)
{
for (char c = 'x'; c <= 'z'; c++)
{
if (c!=a&&c!=b)
{
if (a != 'x' && c != 'x' && c != 'z')
{
printf("a-%c,b-%c,c-%cn", a, b, c);
}
}
}
}
}
}
}

总结

这种算法题其实就是一个逻辑问题,和我一起平时多练多思考吧

最后

以上就是甜美小松鼠为你收集整理的每周算法题(从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案,有1、2、3、4数字,组成无重复的三位数两个乒乓球队进行比赛,各出三人。甲队为a,b,c)每周算法题一、从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。二、有1、2、3、4数字,组成无重复的三位数两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。总结的全部内容,希望文章能够帮你解决每周算法题(从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案,有1、2、3、4数字,组成无重复的三位数两个乒乓球队进行比赛,各出三人。甲队为a,b,c)每周算法题一、从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。二、有1、2、3、4数字,组成无重复的三位数两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部