2 sinat 30690685 sinat_30690685 于 2016.03.22 22:01 提问

有4个互不相同的数字,输出由其中三个不重复数字组成的排列。 5C

#include
using namespace std;
void fun(int x,int y,int z){
int i,j,temp;
for(i=0;i if(i==1){
temp=x;
x=y;
y=temp;
}
if(i==2){
temp=x;
x=z;
z=temp;
}
cout cout }
}
int main(){
int i,j,k,l;
while(cin>>i>>j>>k>>l,i||j||k||l){
fun(i,j,k);
fun(i,j,l);
fun(i,k,l);
fun(j,k,l);
}
return 0;
}
我的代码输出结果是正确的,就是提交oj时,提示我输出超限

4个回答

Dennis_Zip
Dennis_Zip   2016.03.22 22:40

应该问题还是出在了 while(cin>>i>>j>>k>>l,i||j||k||l) 这句,只要输入时输入一个非法值,比如含有字符(流入输入 a 1 2 3),那么 cin流就会被设置失败标志,而在流状态恢复正常之前,下次循环的所有流操作都会被忽略,由于你这里又同时使用了逗号运算符,就相当于导致了死循环。

sinat_30690685
sinat_30690685 我把后面那个删了就A了
一年多之前 回复
sinat_30690685
sinat_30690685 题目不是说了输入四个不同的数字,不可能是非法字符吧~而且我这种输也应该没问题吧,oj上也不太可能输字符吧
一年多之前 回复
sinat_30690685
sinat_30690685   2016.03.22 22:04

有4个互不相同的数字,输出由其中三个不重复数字组成的排列。

输入
4个整数。

输出
所有排列。

样例输入
1 2 3 4
样例输出
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
1 2 4
1 4 2
2 1 4
2 4 1
4 1 2
4 2 1
1 3 4
1 4 3
3 1 4
3 4 1
4 1 3
4 3 1
2 3 4
2 4 3
3 2 4
3 4 2
4 2 3
4 3 2

qq_26714389
qq_26714389   2016.03.22 22:40

超时了就说明算法没写好,效率低,试试用字典序生成排列吧

tanjunchen
tanjunchen   2016.03.24 00:20

算法有问题吗?首位不为0 算法fun()什么意思

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!