[关闭]
@sensitive-cs 2016-10-04T08:44:45.000000Z 字数 392 阅读 650

C - The number of positions

分析:

题意为n个人站一排,一个人的前面至少有a个人,后面至多有b个人,求此人可能的位置有多少种。

思路:

当满足n个人的条件时,让前面的人的个数从a增加到n,后面的人的个数从0增加到b,用一个flag标记共有多少种站法使得条件成立,最后输出flag。

代码:

  1. #include <stdio.h>
  2. int m[111];
  3. int main()
  4. {
  5. int n,a,b;
  6. while (scanf("%d%d%d",&n,&a,&b) != EOF)
  7. {
  8. int i,j,cal = 0;
  9. for (i = 1;i <= n;i++)
  10. m[i] = 6;
  11. for (i = a;i <= n;i++)
  12. for (j = 0;j <= b;j++)
  13. {
  14. if (i+j+1 == n)
  15. {
  16. m[i+1] = 8;
  17. }
  18. }
  19. for (i = 1;i <= n;i++)
  20. {
  21. if (m[i] == 8)
  22. cal++;
  23. }
  24. printf("%d\n",cal);
  25. }
  26. return 0;
  27. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注