C++/硬币找零/贪心算法/代码优化
本帖最后由 灰灰会画画 于 2022-3-26 15:06 编辑一道C++的题目,想问问大佬们我的代码如何优化一下,看起来更简洁一点,谢谢~
我的代码:
#include<iostream>
using namespace std;
int main()
{
int m,q=0,d=0,n=0,c=0;
cin>>m;
while (m>0){
if(m>=25){
q+=1;
m-=25;
continue;
}
if(m>=10){
d+=1;
m-=10;
continue;
}
if(m>=5){
n+=1;
m-=5;
continue;
}
if(m>=1){
c+=1;
m-=1;
}
}
cout<<"Change: ";
if(q>1) cout<<q<<" Quarters, ";
else cout<<q<<" Quarter, ";
if(d>1) cout<<d<<" Dimes, ";
else cout<<d<<" Dime, ";
if(n>1) cout<<n<<" Nickels, ";
else cout<<n<<" Nickel, ";
if(c>1) cout<<c<<" Cents, ";
else cout<<c<<" Cent";
}
本帖最后由 傻眼貓咪 于 2022-3-26 15:23 编辑
#include <iostream>
using std::cout, std::cin;
int main(){
short n, t;
cin >> n;
cout << "change: ";
n/25 > 1 ?
cout << n/25 <<" Quarters, ":
cout << n/25 << "Quarter, ";
n %= 25;
n/10 > 1 ?
cout << n/10 << " Dimes, ":
cout << n/10 << " Dime, ";
n %= 10;
n/5 > 1 ?
cout << n/5 << " Nickels, ":
cout << n/5 << " Nickel, ";
n %= 5;
n > 1 ?
cout << n << " Cents":
cout << n << " Cent";
return 0;
} 傻眼貓咪 发表于 2022-3-26 15:17
谢谢你的回答~请问代码第8行 n/25 > 1 ? ,是C++中的什么用法,还有short n,t中,变量t是起到什么作用呀 #include <iostream>
#include <utility>
int main()
{
std::pair<int, std::string> money = {{25, "Quarter"}, {10, "Dime"}, {5, "Nickel"}, {1, "Cent"}};
short n;
std::cin >> n;
std::cout << "change: ";
for(std::pair<int, std::string> &m: money){
if(n/m.first > 1) m.second += "s";
if (m.first != 1) m.second += ", ";
cout << n/m.first << " " << m.second;
n %= m.first;
}
return 0;
} 灰灰会画画 发表于 2022-3-26 15:50
谢谢你的回答~请问代码第8行 n/25 > 1 ? ,是C++中的什么用法,还有short n,t中,变量t是起到什么作用呀
第8行 n/25 > 1 ? 是三元运算符,比如:
条件 A ? 代码 X : 代码 Y
如果条件 A 成立(true)则运行代码 X,否则运行代码 Y
short 如同 int float double char 等等,是整数类型,因为你的题目最大值是 100 而已,所以用 short,当然你也可以用 int
变量 t 没有任何作用(纯粹是我忘记删除了)
傻眼貓咪 发表于 2022-3-26 16:04
第8行 n/25 > 1 ? 是三元运算符,比如:
条件 A ? 代码 X : 代码 Y
好的,明白了,非常感谢你的讲解!
页:
[1]