15.5.29 整数找1问题

主要思路:没有按照大家的思维去找规律,而是直接利用字符串匹配,把int转string,让程序去判断,匹配到1,计数器就加1。

暴力法,时间复杂度太高。n=f(n),目前算的最大n是200001。

尝试算50000000,等了很久第一个数的f(n)都没出来...

//Powered by LZR! 字符串匹配找1
#include<iostream>
#include<string>
using namespace std;

int coute(int n)
{
    string  str;
    int i,j,clock=0;
    for(i=1;i<=n;i++)
    {
        char t[32];
        sprintf(t,"%d",i);
        str=t;
        for(j=0;j<str.length();j++)
        {
            if(str.find_first_of("1",j)==j) 
            {     
                clock++;
            }
        }
    }
    return clock;
}

void main()
{
    int n;
    cout<<"请输入一个正整数:"<<endl;
    cin>>n;
    cout<<"字符1,出现的次数为:"<<coute(n)<<endl;
}

posted @ 2015-05-31 10:14  主題遠志  阅读(114)  评论(0编辑  收藏  举报