查看: 2223|回复: 7
收起左侧

Bloomberg : 输出排列个数

|只看干货 |刷题
头像被屏蔽

分享帖子到朋友圈
wwwyhx | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

上一篇:google : 记电话号码
下一篇:MSRA : 二叉树上移石头
Etrnls 2011-5-11 14:32:47 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (7)
 
 
0% (0)    👎
其实就是求three digits加起来等于k的排列有几种
回复

使用道具 举报

darksteel 2011-5-11 14:41:48 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (32)
 
 
0% (0)    👎
回复 2# Etrnls
有道理!这样可以先预处理一下,3重循环算出3个数的和的组成方式的数目,要注意避免重复。然后就可以过一遍所有可能的和并且算出答案
回复

使用道具 举报

darksteel 2011-5-11 14:43:31 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (32)
 
 
0% (0)    👎
第一个数字如果不能是0还麻烦点,需要单独考虑下
回复

使用道具 举报

darksteel 2011-5-12 00:15:13 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (32)
 
 
0% (0)    👎
  1.         int way3[30], way2[30];
  2.         int ans = 0;
  3.         int i, j, k;
  4.         memset(way3, 0, sizeof(way3));
  5.         memset(way2, 0, sizeof(way2));
  6.         for(i = 0; i < 10; i++) for(j = 0; j < 10; j++) {
  7.                 for(k = 0; k < 10; k++)
  8.                         way3[i+j+k]++;
  9.                 way2[i+j]++;
  10.         }
  11.         for(i = 0; i < 30; i++)
  12.                 ans += (way3[i]-way2[i])*way3[i];
  13.         cout << ans << endl;
复制代码
回复

使用道具 举报

bill 2011-5-15 01:12:42 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (1)
 
 
0% (0)    👎
是dp吗?开一个table[3][sum]. 复杂度为3sum
回复

使用道具 举报

头像被屏蔽
 楼主| wwwyhx 2011-5-15 02:31:19 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
 楼主| wwwyhx 2011-5-15 02:32:19 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

隐私提醒:
■拉群请前往同学同事飞友|拉群结伴版块,其他版块拉群,帖子会被自动删除
■论坛不能删帖,为防止被骚扰甚至人肉,不要公开留微信等联系方式,请以论坛私信方式发送。
■特定版块可以超级匿名:https://tools.1point3acres.com/thread
■其他版块匿名方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

>
快速回复 返回顶部 返回列表