Leetcode的couting bits
来源:互联网 发布:java completefuture 编辑:程序博客网 时间:2024/05/22 13:11
#include<iostream>#include<string>#include<vector>#include <initializer_list>using std::initializer_list;using std::vector;using std::string;using std::cin;using std::cout;using std::endl;vector<int> two(int m){ vector<int> v1; int n; while (m > 0){ n = m % 2; m = m / 2; v1.push_back(n); } return v1;}int count(vector<int> v2){ int timesof1 = 0; for (decltype(v2.size()) i = v2.size(); i != 0; i--){ int c = v2[i - 1]; if (c == 1) timesof1++; } return timesof1;}void digui(int m,vector<int> &v3){ vector<int> v2 = two(m); int w = count(v2); v3.push_back(w); //while (m >= 1){ //m = m - 1; if (m>=1) digui(m-1, v3); //cout << m; //}}int main(){ int m=0; cin >> m; vector<int> v4; vector<int> &v5 = v4; digui(m,v5); for (decltype(v4.size()) i = v4.size(); i != 0; i--) cout << v4[i-1]; cout << m; system("pause"); return 0;}
详见project1
在3000多以内可以运行,但是之后会报错
一开始,我以为是超出int表示范围,但是我运行其它人的代码,发现可以运行3000多以上的,证明是我代码问题,但迄今尚未解决,也可能是我超时。
在这次程序,我遇到一个问题,关于while与if区别的
在以下这段代码中
//while (m >= 1){ if (m>=1) digui(m-1, v3); //cout << m; //}
我第一次是用while,程序报错,直到我将while改成if.
while是条件为真时,不断循环,if是条件为真,执行一次。
所以我用while时,实际上是陷入一个双层嵌套循环,所以报错。
0 0
- Leetcode的couting bits
- LeetCode中338Counting Bits的题解
- LeetCode上reverse bits的C++解法
- leetcode:bits:Counting Bits(338)
- leetCode #190 reverse bits
- 【LeetCode】Reverse Bits
- LeetCode:Reverse Bits
- LeetCode: Reverse Bits
- LeetCode: Reverse Bits
- [LeetCode]Reverse Bits
- leetcode: Reverse Bits
- LeetCode 190 Reverse Bits
- [LeetCode] Reverse Bits
- Leetcode--Reverse Bits
- [leetcode]Reverse Bits
- [LeetCode][190][Reverse Bits]
- #leetcode#Reverse Bits
- LeetCode Reverse Bits
- 【Java 基础三】transient关键字
- 【iOS】自定义TabBarController
- 尝试往pe.data区写数据
- 一维数组
- python导出 excel文件
- Leetcode的couting bits
- BlocksKit源码分析(二)
- java基础总结_01
- java.lang.UnsatisfiedLinkError(JNI) signature
- 数据库日期格式获取
- 删除Xcode描述文件
- HDU 1092
- netd 框图
- Spring轻量级调度