#include<iostream.h>
void main() { char a[5]; cin>>a; cout<<a<<endl; } 不大于9999 5就够了
我写了一个复杂度为O(n*n*n*n)的算法,看了可别骂我,我也是没办法!
#include "stdafx.h"
#include<iostream>
#include "string"
using namespace std;
string Convert(int a)
{
string res;
if(a>=0&&a<=9)
{
switch(a)
{
case 0:
res="0";
break;
case 1:
res="1";
break;
case 2:
res="2";
break;
case 3:
res="3";
break;
case 4:
res="4";
break;
case 5:
res="5";
break;
case 6:
res="6";
break;
case 7:
res="7";
break;
case 8:
res="8";
break;
case 9:
res="9";
break;
}
}
return res;
}
void main()
{
int a=1500;
string s1;
string s2;
string s3;
string s4;
string s;
for(int i=1;i<=9;i++)
for(int j=0;j<=9;j++)
for(int n=0;n<=9;n++)
for(int m=0;m<=9;m++)
if((i*1000+j*100+n*10+m)==a)
{
s1=Convert(i);
s2=Convert(j);
s3=Convert(n);
s4=Convert(m);
s=s1+s2+s3+s4;
break;
}
cout<<s<<endl;
}
为了降低复杂度,其实我吧四个for循环改成如下,但又出错,如果那位高手查出了问题请邮件联系我(wuwwuu@hotmail.com):
//int i,j,n,m;
//for(i=1;i<=9;i++)
//{
// if(i==a%1000)
// break;
//}
//for(j=0;j<=9;j++)
//{
// if((i*10+j)==a%100)
// break;
//}
// for(n=0;n<=9;n++)
// {
// if((i*100+j*10+n)==a%10)
// break;
// }
// for(m=0;m<=9;m++)
// {
// if((i*1000+j*100+n*10+m)==a)
// break;
// }