首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于算法的有关问题

2012-04-18 
请教高手关于算法的问题1、有0.1,0.5,1,5,10,20,50,100共8个数字 现在需要组合成100问共有多少种组合方式?

请教高手关于算法的问题
1、有0.1,0.5,1,5,10,20,50,100共8个数字 现在需要组合成100问共有多少种组合方式?打印出这些组合
2、设计一个算法,实现将数字通过26进制转化为字符(如:0-A,1-B,26-AA,27-AB,28-AC,52-BA,78-CA)

[解决办法]
第一个问好像是
1毛,5毛,一块,五块,十块,二十块,五十块,一百块哦。和速算24算法相似
[解决办法]
第二个:可以定义一个26维的数组letter[26]。letter[1] = 'A',letter[2] = 'B‘.....
然后就是平常转二进制的方法。输出改成letter[i]就行了···
[解决办法]
2应该用栈来解决
[解决办法]
第一题可以用穷举···每个数的限制条件就是100除以每一个数所得的最大个数···
不过效率有点低···
等大牛···
[解决办法]
第二题:

C/C++ code
#include <iostream>using namespace std;int main(){    int num;    char str[256] = {'A'};//如果输入0的话,循环不执行,那么输出就要特殊处理了    int index = 0;    cin>>num;    while(num)    {        str[index++] = num%26 + 65;        num /=26;    }    cout<<num<<"的26进制表示:";    if (index == 0)    {        index++;    }    for (int i = index--; i >= 0; i--)    {        cout<<str[i];    }    cout<<endl;    return 0;}
[解决办法]
A是0 26怎么会是AA呢 是BA 
代码如下
C/C++ code
int main(){        int val;    while(cin >> val)    {        int top = -1;        char stack[100] = {0};        if(val == 0)           stack[++top] = 'A';        while(val)        {            stack[++top] = val % 26 + 'A';            val = val / 26;        }        while(top >= 0)           cout << stack[top--];        cout << endl;    }        return 0;} 

热点排行