OginoChihiro 2017-07-31 09:59 采纳率: 0%
浏览 1687

acm 2005 生成元问题 给出n(1≤n≤100000),求最小生成元。无解输出0

#include
#include
const int maxn = 100000 + 5;
int ans[maxn];
void solve() //离线做法
{
memset(ans, 0, sizeof(ans));
for (int i = 1; i < maxn; i++)
{
int x = i, y = i;
while (x)
{
y += x % 10;
x /= 10;
}
if (ans[y] == 0 || i < ans[y]) //请问这句能否改为if (ans[y] == 0)即去掉后面的判断条件,如果不能,能否找个特例?感谢大神的帮助!!!
ans[y] = i;
}
}
int main()
{
int T, n;
solve();
scanf("%d", &T);
while (T--)
{
scanf("%d", &n);
printf("%d\n", ans[n]);
}
}

  • 写回答

4条回答 默认 最新

  • OginoChihiro 2017-07-31 11:16
    关注

    基本的想法我能看懂,就是我注释的那行我不太懂,ans[y]初值为零的时候肯定小于i,那个i会不断变大,所以ans[y]已经得到赋值的时候肯定会小于i,即后面的判断语句(||i < ans[y])肯定是false,也就是可以省略掉,请问我这个想法对不对呢?

    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?